ngIf = false和ngContent仍会加载模板绑定

Dav*_*vid 5 javascript angular2-ngcontent angular

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

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

像这样使用时:

  <loader>
      {{model.something}}
  </loader>
Run Code Online (Sandbox Code Playgroud)

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

Pan*_*kar 1

loader因为即使组件模板没有注入到 DOM,组件的内部内容ngContent也会在当前组件上下文 ( ) 中被编译一次。this

ng-transclude它的工作方式与Angular 1.X 中的工作方式相同

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

<loader>
    {{model?.something}}
</loader>
Run Code Online (Sandbox Code Playgroud)