use*_*ert 20 javascript angular
我正在为基础css框架编写角度组件.我正在处理选项卡组件,并希望能够将一些HTML传递给<ng-content>它.
问题是,我还需要传递用户可以绑定的html,如下所示:
父母模板
<tabs [data]='example'>
<div> Age <br> {{item.age}} </div>`
</tabs>
Run Code Online (Sandbox Code Playgroud)
TABS组件
<ul class="tabs" #tabs>
<li *ngFor="let item of data | async" (click)="tabClick($event)">
<a>{{item.name}}</a>
</li>
</ul>
<div>
<ng-content></ng-content>
</div>
Run Code Online (Sandbox Code Playgroud)
TABS TYPESCRIPT
@Component({
selector: 'tabs',
templateUrl: './tabs.component.html'
})
export class TabsComponent {
@Input('data') data:any;
@ViewChild('tabs') tabs: ElementRef;
}
Run Code Online (Sandbox Code Playgroud)
哪里item是对example数组中对象的引用.
不过,我得到这个错误:
Cannot read property 'name' of undefined
因为item它插入之前正在评估<ng-content>指令.
有没有办法解决这个限制,或者我是以错误的方式解决这个问题?
Gün*_*uer 28
更新Angular 5
ngOutletContext 被重命名为 ngTemplateOutletContext
另见https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29
原版的
ngTemplateOutlet或者ngForTemplate可以用于该用例:
<tabs [data]='example'>
<ng-template let-item>
<div> Age <br> {{item.age}} </div>`
</ng-template>
</tabs>
Run Code Online (Sandbox Code Playgroud)
@Component({
...
template: `
<ul class="tabs" #tabs>
<li *ngFor="let item of data | async" (click)="tabClick($event)">
<a>{{item.name}}</a>
</li>
</ul>
<div>
<ng-template [ngTemplateOutlet]="templateRef" [ngTemplateOutletContext]="{$implicit: (data | async)}"></ng-template>
</div>
`
})
class TabsComponent {
@ContentChild(TemplateRef) templateRef:TemplateRef;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22564 次 |
| 最近记录: |