我試圖做一個可重複使用的選項卡組件,並且對如何遍歷組件中的多個ContentChildren
(已更正)將它們包裝在html中感到困惑。Angular 2 - 包裝組件兒童
我有一個組件在我看來
<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>
我想爲呈現像這樣:
<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>
它似乎並不像我可以在ng-content
嵌入含量是我第一次嘗試,並且下面的模板被炸掉了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() {
}
}
一些替代解決方案https://stackblitz.com/edit/angular-wqjlbw?file=app%2Fapp.module.ts但我喜歡你的回答 – yurzui
@yurzui,是的,這當然是可能的,而且不是一個糟糕的選擇儘管如此,我還是喜歡儘可能少地放入html中 - 這樣它就可以更清晰地閱讀,重要的東西也不會在一堆次要的HTML內容中隱藏起來。 –
完美運作。我也看了@ yurzui的解決方案,我也看到了它的工作方式,但我同意,這個更清晰(無論如何,對我來說都是一個小菜鳥)。謝謝! – BLSully