在使用 Angular 2 进行开发时,可能会遇到如下错误信息:
----- -- ----- ----------- --------- ------ ------ ----------- -------- -- ---- ------- ------------- -- --- ---------- -- --------- -- ---- ------------
造成这个错误的原因是我们在应用程序的根模块中使用了 AppComponent
类型作为 bootstrap function 的参数,但是 AppComponent
并不是继承自 Type<any>
。
该问题的解决方法是将 bootstrap function 的参数类型更改为 any
。这样做的原因是,bootstrap
函数的最新实现返回一个 Promise<ComponentRef<T>>
,其中 T
表示任何组件类型。以下是调整后的根模块代码示例:
------ - ------------- - ---- ---------------------------- ------ - -------- - ---- ---------------- ------ - ------------ - ---- ------------------ ------ - ----------- - ---- ----------------- ----------- ------------- - ------------ -- -------- - -------------- ----------- -- ---------- --- ---------- -------------- -- --- -- ------ --- -- ------ ----- --------- - -
通过将 bootstrap
数组声明为 any
类型,我们可以防止编译器出现类型检查错误,并使应用程序顺利启动。
此外,还有一种更加正规的解决方法,即通过将 AppComponent
类型更改为 Type<any>
类型来解决问题。在这种情况下,我们需要在 app.component.ts
中导出 AppComponent
类型。以下是代码示例:
------ - --------- - ---- ---------------- ------------ --------- ----------- ------------ ----------------------- ---------- ----------------------- -- ------ ----- ------------ - ----- - --------- - ------ ----- ---------------- - ------------- -- -- ------------ --
然后,在根模块中,我们将 bootstrap
属性更改为 AppComponentType
:
------ - ------------- - ---- ---------------------------- ------ - --------- ---- - ---- ---------------- ------ - ------------- ---------------- - ---- ------------------ ------ - ----------- - ---- ----------------- ----------- ------------- - ------------ -- -------- - -------------- ----------- -- ---------- --- ---------- ------------------ -- -- ---------------- -- ------------ -- ------ ----- --------- - -
通过以上两种方法的其中一种,你可以很容易地解决 "Argument type AppComponent is not assignable to parameter type Type" 错误,并顺利启动你的 Angular 2 应用程序。
希望本文对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/25438