尝试用ng-template查询CdkPortalOutlet总是不成功,我不明白为什么?

<ng-template CdkPortalOutlet></ng-template>

@ViewChild(CdkPortalOutlet) test: CdkPortalOutlet;


stackblitz

最佳答案

为了在CdkPortalOutlet模板中使用AppComponent指令,您需要在PortalModule中导入AppModule(即,已声明AppComponent的NgModule)

import { PortalModule } from '@angular/cdk/portal';
...

@NgModule({
  imports:      [ BrowserModule, FormsModule, PortalModule, OverlayModule ],
                                              ^^^^^^^^^^^^
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ]
})

export class AppModule { }


此外,Angular HTML解析器区分大小写,因此您需要像这样使用它:

<ng-template cdkPortalOutlet></ng-template>
             ^^^
          lower case


Forked Stackblitz

关于javascript - @ViewChild(CdkPortalOutlet)在AfterViewInit中返回未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54054997/

10-09 16:41