Как поместить компонент внутри другого компонента в Angular2?
Я новичок в угловых и я все еще пытаюсь понять это. Я следил за курсом по виртуальной академии Microsoft, и это было здорово, но я нашел небольшое несоответствие между тем, что они сказали, и как ведет себя мой код! В частности, я попытался "поместить компонент внутри другого компонента" следующим образом:
@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{}
это тот же пример, который они делают на курсе, но в моем коде не работает! В частности, VisualStudio говорит мне, что свойство "директивы" не делает существует в компонентном декораторе. Как я могу это решить?
3 ответов
вы не ставить компонент directives
вы Регистрация его в @NgModule
объявления:
@NgModule({
imports: [ BrowserModule ],
declarations: [ App , MyChildComponent ],
bootstrap: [ App ]
})
и затем вы просто помещаете его в шаблон HTML родителя как:<my-child></my-child>
вот и все.
Я думаю, что в вашей угловой-2 версии директивы не поддерживаются в компонентном декораторе, поэтому вам нужно директива Register то же, что и другой компонент в @NgModule и затем импортировать в компонент, как показано ниже, а также удалить directives: [ChildComponent]
от оформителя.
import {myDirective} from './myDirective';
если вы удалите атрибут директив, он должен работать.
@Component({
selector: 'parent',
template: `
<h1>Parent Component</h1>
<child></child>
`
})
export class ParentComponent{}
@Component({
selector: 'child',
template: `
<h4>Child Component</h4>
`
})
export class ChildComponent{}
директивы подобны компонентам, но они используются в атрибутах. У них также есть Декларатор @Directive
. Вы можете узнать больше о директивах Структурные Директивы и Директивы Атрибут.
есть два других вида угловых директив, подробно описанных в другом месте: (1) компоненты и (2) директивы атрибута.
A компонент управляет областью HTML в манере собственного HTML элемент. Технически это директива с шаблоном.
также, если вы откроете глоссарий, вы можете найти, что компоненты также являются директивами.
директивы попадаете в одну из следующих категорий:
компоненты объединить логику приложения с HTML-шаблоном для визуализации представлений приложений. Компоненты обычно представлены в виде HTML элементы. Они являются строительными блоками углового применения.
директивы атрибут можно слушать и изменять поведение других HTML-элементов, атрибутов, свойств и компонентов. Они обычно представлен в виде атрибутов HTML, отсюда и название.
структурные директивы ответствены для формировать или переформовать план HTML, типично мимо добавление, удаление или управление элементами и их детей.
разница в том, что компоненты имеют шаблон. См.Угловое Архитектуры обзор.
директива класс
@Directive
оформителя. Компонент-это директива-с-шаблоном; a@Component
оформителя на самом деле@Directive
декоратор расширен с функциями, ориентированными на шаблон.
на @Component
метаданные не имеют . См.компонентный декоратор.