Я новичок в 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()
0
user11680003 28 Ноя 2019 в 03:33
1
forRoot — это статический метод в RouterModule. Если вы объявляете статический метод в одном из ваших собственных модулей, вы можете вызвать его таким же образом.
 – 
R. Richards
28 Ноя 2019 в 03:38
@R.Richards спасибо за ваш ответ. так как я могу объявить статический метод в модуле?
 – 
user11680003
28 Ноя 2019 в 03:39
1
В общем, вот так: static forRoot(): ModuleWithProviders { return { ngModule: AbcModule }; } angular.io/ руководство/ngmodule-faq#what-is-the-forroot-method. Это полезно при создании библиотек для использования в других проектах.
 – 
R. Richards
28 Ноя 2019 в 03:43
@R.Richards, вы имеете в виду, что статический метод должен быть уточнен внутри AbcModule так же, как определение статического метода в обычном классе?
 – 
user11680003
28 Ноя 2019 в 03:48
1
Да. См. этот старый ответ, который я разместил: title="angular 6 cli workspaces, как создать библиотеку для экспорта сервисов"> stackoverflow.com/questions/50534543/…. Может помочь вам увидеть, как это будет выглядеть в реальной ситуации.
 – 
R. Richards
28 Ноя 2019 в 03:49

1 ответ

Модуль — это просто «обычный» класс с аннотацией @NgModule. Поэтому нет никаких причин, по которым у него не может быть методов, включая статические методы, такие как forRoot().

0
GreyBeardedGeek 28 Ноя 2019 в 07:58