ngIf = false,ngContent仍然加载模板绑定

时间:2016-07-07 12:29:52

标签: javascript angular angular2-ngcontent

定义一个简单的组件如下:

@Component({
  selector: 'loader',
  template: `<div *ngIf='false'>
        <ng-content></ng-content>
        </div>`,
})
export class Loader {}

当像这样使用时:

  <loader>
      {{model.something}}
  </loader>

如果在父级中未定义模型,我仍然会遇到模板绑定错误,因为即使使用ngIf=false,它也会尝试解析绑定。为什么会这样?

1 个答案:

答案 0 :(得分:1)

因为要在loader元素内投影的ngContent组件的内部内容,使用当前组件上下文(this)进行一次编译,即使组件模板不是&#39 ; t注入DOM。

它的工作方式与ng-transclude在Angular 1.X

中的工作方式相同

您应该在此使用Elvis Operator来避免此类问题

<loader>
    {{model?.something}}
</loader>