Angular8-如何通过InjectionToken和ComponentPortal将输入传递到CDK Overlay

Angular8-如何通过InjectionToken和ComponentPortal将输入传递到CDK Overlay,angular,angular-material,angular-cdk,angular-dependency-injection,Angular,Angular Material,Angular Cdk,Angular Dependency Injection,我有两个组件:主组件和确认组件(覆盖) 单击主组件上的按钮时,应触发确认组件以角度CDK覆盖打开 问题是,我不能像许多其他ie建议的那样,通过自定义注入器和注入令牌将任何内容从主组件传递到确认组件 我在Stackblitz上的代码: 我在代码中遗漏了什么愚蠢的东西吗?我一直在得到StaticInjectorError和NullInjectorError 首先非常感谢各位 主组件: export const OVERLAY_DATA = new InjectionToken<any>

我有两个组件:主组件和确认组件(覆盖)

单击主组件上的按钮时,应触发确认组件以角度CDK覆盖打开

问题是,我不能像许多其他ie建议的那样,通过自定义注入器和注入令牌将任何内容从主组件传递到确认组件

我在Stackblitz上的代码:

我在代码中遗漏了什么愚蠢的东西吗?我一直在得到StaticInjectorError和NullInjectorError

首先非常感谢各位

主组件:

export const OVERLAY_DATA = new InjectionToken<any>("OVERLAY_DATA");

@Component({
  selector: "my-app",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent {
  constructor(
    public overlay: Overlay,
    public viewContainerRef: ViewContainerRef,
    private injector: Injector
  ) {}

  public onClick() {
    const config = new OverlayConfig({
      hasBackdrop: true,
      scrollStrategy: this.overlay.scrollStrategies.block()
    });
    config.positionStrategy = this.overlay.position()
      .global()
      .centerHorizontally()
      .centerVertically();
    const overlayRef = this.overlay.create(config);
    overlayRef.backdropClick().subscribe(() => {
      overlayRef.dispose();
    });

    const componentPortal = new ComponentPortal(
      HelloComponent,
      this.viewContainerRef,
      this.createInjector('TestDataStringToPass')
    );
    overlayRef.attach(componentPortal);
  }

  private createInjector(dataToPass): PortalInjector {
    const injectorTokens = new WeakMap();
    injectorTokens.set(OVERLAY_DATA, dataToPass);
    return new PortalInjector(this.injector, injectorTokens);
  }
} 
export class HelloComponent {

  public displayData: any;

  constructor(@Inject("OVERLAY_DATA") public data: any) {
    console.log("OVERLAY_DATA :", data);
    this.displayData = data;
  }
}

请参考此链接中的此答案为我工作[链接]?请参考此链接中的此答案为我工作[链接]?