【发布时间】:2019-11-28 00:33:10
【问题描述】:
我是 Angular 的新手,还在努力理解模块。
我看到一本书的代码如下:
import { Routes, RouterModule } from "@angular/router";
const routes: Routes = [{ path: "form/edit", component: FormComponent }]
export const routing = RouterModule.forRoot(routes);
作者说:
forRoot 方法生成一个包含路由服务的模块
我很困惑,如何使用一个模块来访问像forRoot 这样的函数,模块不只是声明要使用的组件/指令吗? CustomModule.CustomMethod() 怎么用?
例如,定义一个模块的模板是:
import ...
@NgModule({
imports: [BrowserModule...],
declarations: [AppComponent...],
providers: [...]
})
export class AbcModule { } //where can I define static CustomMethod?
没有可以在 AbcModule 中使用的静态方法的定义:
AbcModule.CustomMethod()
【问题讨论】:
-
forRoot是RouterModule中的一个静态 方法。如果你在自己的模块中声明一个静态方法,你可以用同样的方式调用它。 -
@R.Richards 感谢您的回答。那么如何在模块中声明静态方法呢?
-
基本上就是这样:
static forRoot(): ModuleWithProviders { return { ngModule: AbcModule }; }angular.io/guide/ngmodule-faq#what-is-the-forroot-method。这在构建用于其他项目的库时很有用。 -
@R.Richards 你的意思是静态方法需要在 AbcModule 内部进行微调,就像在普通类中定义静态方法一样?
-
是的。请参阅我发布的这个旧答案:stackoverflow.com/questions/50534543/…。可以帮助您了解它在真实情况下的样子。
标签: angular