具有 Material Design Lite 的 Angular2

Angular2 with Material Design Lite

我在我的 angular2 应用程序中添加了以下代码,以帮助 MDL 在应用程序中移动时重新注册组件...

ngAfterViewInit() {
    componentHandler.upgradeDom();
}

虽然它似乎工作正常(正如预期的那样),但我收到以下错误...

(16,5): error TS2304: Cannot find name 'componentHandler'.

我对 angular2 和 typescript 还是很陌生,但我想我需要导入一些东西,这样我的代码就知道 componentHandler 是什么(尽管它必须知道它是什么,因为它可以工作,没有这个代码就不能工作??? 困惑)

我猜你需要添加

declare componentHandler;
componentHandler.upgradeDom();

另见 Calling JavaScript directly from TypeScript

应该可以帮你补充

declare var componentHandler: any;

在代码的顶部。请参阅 Working with Other JavaScript Libraries in TypeScript 中相应的 handbook section

如果您使用 cli.angular 工具生成您的应用 这样做,这样就不需要到处重复代码了。

  1. 将以下行添加到 typings.d.ts 文件

       declare var componentHandler: any;  
  2. 将文件引用到您的组件文件中,如下所示

       /// <reference path="../typings.d.ts" />