How to check whether ng-content exists

后端 未结 2 1420
孤街浪徒
孤街浪徒 2020-12-14 00:49

Suppose i have simple Bootstrap panel component with multiple transclusion slots. Template example:

2条回答
  •  一整个雨季
    2020-12-14 01:44

    If you have a parent element of with a template variable (#panelHeading)

    then you can query for it like

    @ViewChild('panelHeading') panelHeading;
    

    and set a property depending on whether there are children or not

    constructor(private cdRef:ChangeDetectorRef) {}
    
    showHeading:boolean = false;
    
    ngAfterViewInit() {
      this.showHeading = this.panelHeading.nativeElement && this.panelHeading.nativeElement.children.length > 0;
      this.cdRef.detectChanges();
    }
    

    If is an Angular2 component, then you can also use

    @ContentChild(MyPanelHeading) panelHeading:MyPanelHeading;
    
    constructor(private cdRef:ChangeDetectorRef) {}
    
    showHeading:boolean = false;
    
    ngAfterViewInit() {
      this.showHeading = this.panelHeading != null;
      this.cdRef.detectChanges();
    }
    

提交回复
热议问题