У меня есть 2 компонента, я хочу, чтобы повторно использовать один в другом, так что это компонент, я хочу, чтобы повторно использовать ExpressionBuilderComponent:Угловое 2 Неожиданное значение директивы «не определено»
@Component({
selector: 'expression-builder',
template: `
<div class="container">
<expression *ngFor="#expression of expressions" [prototypes]="prototypes" [expression]="expression" [expressions]="expressions"></expression>
<a class="btn btn-primary" (click)="addExpression()"><i class="glyphicon glyphicon-plus"></i></a>
</div>
`,
directives: [ExpressionComponent]
})
чем у меня ExpressionComponent так:
@Component({
selector: 'expression',
template: `
<div class="row">
<!-- First Select -->
<div class="col-xs-3">
<select class="form-control" [(ngModel)]="selectedPrototypeSelector" (ngModelChange)="onPrototypeChange()">
<option *ngFor="#p of prototypes" [value]="p.selector">
{{ p.selectorName }}
</option>
</select>
</div>
<!-- Expression Set selector -->
<div *ngIf="prototype?.valueType === 'Set'">
<expression-builder></expression-builder>
</div>
Вот PLUNKR и он должен показать тест два раза, потому что я использую <expression-builder>
дважды.
В моем проекте он показывает как пустой элемент, На этом скриншоте вы можете увидеть, как он вынес из:
Может кто-то пожалуйста, помогите мне в этом, как это возможно, что в этом случае работает?
http://www.syntaxsuccess.com/viewarticle/recursive-treeview-in-angular-2.0
Для начала вам нужно обратиться к 'ExpressionBuilderComponent', написав' директивы: [ExpressionBuilderComponent] '. После этого, далее в дереве компонентов вы должны написать 'директивы: [forwardRef (() => ExpressionBuilderComponent)]', если вы хотите снова ссылаться на него. Вы попробовали это? – user707727
Используйте https://plnkr.co/edit/nW00uu?p=info как шаблон для начала. –
Plunker, похоже, снова работает. –