Wie man eine Komponente innerhalb einer anderen Komponente in Angular2 setzen?
I'm neu bei Angular und I'm noch versuchen, es zu verstehen. I've folgte der Kurs auf der Microsoft Virtual Academy und es war großartig, aber ich fand eine kleine Diskrepanz zwischen dem, was sie sagte und wie mein Code zu verhalten! Insbesondere habe ich versucht, "setzen Sie eine Komponente innerhalb einer anderen Komponente" wie diese:
@Component({
selector: 'parent',
directives: [ChildComponent],
template: `
<h1>Parent Component</h1>
<child></child>
`
})
export class ParentComponent{}
@Component({
selector: 'child',
template: `
<h4>Child Component</h4>
`
})
export class ChildComponent{}
Dies ist das gleiche Beispiel, das sie auf dem Kurs machen, aber in meinem Code doesn't funktionieren! Insbesondere sagt mir VisualStudio, dass die 'directives' Eigenschaft im Komponentendekorator nicht existiert. Wie kann ich das Problem lösen?
36
3
Man stellt eine Komponente nicht in
directives
Sie registrieren sie in
@NgModule
-Deklarationen:und dann fügen Sie es einfach in das Parent's Template HTML als : ``
That's it.
Wenn Sie das Attribut directives entfernen, sollte es funktionieren.
Direktiven sind wie Komponenten, aber sie werden in Attributen verwendet. Sie haben auch einen Deklarator
@Directive
. Sie können mehr über Direktiven Strukturelle Direktiven und Attribut-Direktiven lesen.Es gibt zwei weitere Arten von Angular-Direktiven, die an anderer Stelle ausführlich beschrieben werden
Wenn Sie das Glossar öffnen, können Sie auch feststellen, dass Komponenten auch Richtlinien sind.
Der Unterschied, dass Komponenten ein Template haben. Siehe Angular Architecture Übersicht.
Eine Richtlinie ist eine Klasse mit einem
@Directive
Dekorator. Eine Komponente ist eine Direktive-mit-Template; ein@Component
Dekorator ist eigentlich einDie
@Component
Metadaten haben keindirectives
Attribut. Siehe Komponentendekorator.Ich denke in Ihrer Angular-2 Version werden Direktiven im Component Dekorator nicht unterstützt, daher müssen Sie Registrieren Sie die Direktive wie eine andere Komponente in @NgModule und importieren Sie dann in der Komponente wie unten und entfernen Sie auch
directives: [ChildComponent]
aus dem Dekorator entfernen.