Angular 2 中 Bootstrap Function 出现 "Argument type AppComponent is not assignable to parameter type Type" 错误的解决方案

在使用 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