Ich versuche, eine wiederverwendbare Registerkarte Komponente zu erstellen und bin verwirrt darüber, wie über mehrere ContentChildren
(korrigiert) innerhalb der Komponente, um sie in HTML zu wickeln.Angular 2 - Wrap Komponente Kinder
Ich habe eine Komponente aus meiner Sicht
bekam<demo-tabs>
<a routerLink="/some/link">Tab 1</a>
<a routerLink="/some/other/link">Tab 2</a>
<a routerLink="/some/third/link">Tab 3</a>
</demo-tabs>
, die ich wie so machen möchten:
<ul>
<li><a routerLink="/some/link">Tab 1</a></li>
<li><a routerLink="/some/other/link">Tab 2</a></li>
<li><a routerLink="/some/third/link">Tab 3</a></li>
<ul>
Es scheint nicht, wie ich Inhalt in ng-content
einbetten können die ist was ich zuerst ausprobiert habe, und die folgende Vorlage explodiert mit ExpressionChangedAfterItHasBeenCheckedError
@Component({
selector: 'demo-tabs',
template: `<ul class="tabs">
<li *ngFor="let a of links">
{{a}}
</li>
</ul>`})
export class TabsComponent implements OnInit {
@ContentChildren('a') links: TemplateRef<any>; // corrected. I originally had this as @ViewChildren
constructor() { }
ngOnInit() {
}
}
Einige alternative Lösung https://stackblitz.com/edit/angular-wqjlbw?file=app%2Fapp.module.ts aber ich mag Ihre Antwort – yurzui
@ yurzui, ja, das ist natürlich möglich, und keine schlechte Wahl überhaupt, aber ich mag eigentlich so wenig wie möglich in den html - so liest es sich klarer und wichtige Dinge sind weniger unter Haufen von sekundärem HTML-Zeug versteckt. –
Das hat perfekt funktioniert. Ich habe auch die Lösung von yurzui angeschaut und ich sehe, wie das auch funktioniert, aber ich stimme zu, dass es klarer ist (für einen Anfänger wie mich). Vielen Dank! – BLSully