定义一个简单的组件如下:
@Component({
selector: 'loader',
template: `<div *ngIf='false'>
<ng-content></ng-content>
</div>`,
})
export class Loader {}
当像这样使用时:
<loader>
{{model.something}}
</loader>
如果在父级中未定义模型,我仍然会遇到模板绑定错误,因为即使使用ngIf=false
,它也会尝试解析绑定。为什么会这样?
答案 0 :(得分:1)
因为要在loader
元素内投影的ngContent
组件的内部内容,使用当前组件上下文(this
)进行一次编译,即使组件模板不是&#39 ; t注入DOM。
它的工作方式与ng-transclude
在Angular 1.X
您应该在此使用Elvis Operator
来避免此类问题
<loader>
{{model?.something}}
</loader>