Angular 2使用模块构造函数进行设置

Tre*_*tor 9 angular

我懒加载这个功能模块.它有不同的路由,第一个是默认路由.由于我需要为此功能模块设置菜单,我尝试使用模块构造函数.

它工作得很好,但使用模块设置数据在语义上是否正确?我没有看到有人使用相同方法的任何示例.

import {NgModule}      from '@angular/core';
import {Routes, RouterModule}  from '@angular/router';
import {OverviewComponent} from "@app/$/main/overview.component";
import {DetailComponent} from "@app/$/main/overview.component";
import {MenuService} from "@app/scheme/desk/menu/menu.service";

export const routes:Routes = [
    {
        path: "",
        redirectTo: "overview"
    },
    {
        path: "overview",
        component : OverviewComponent,
    },
    {
        path: "detail",
        component : DetailComponent
    }

];

@NgModule({
    imports: [RouterModule.forChild(routes)],
    declarations:   [OverviewComponent, DetailComponent],
    exports: [RouterModule]
})
export class DeskModule {

    constructor(private menuService:MenuService){

        this.menuService.items = [{
            label: 'Overview',
        },
        {
            label: 'Detail',
        }];

    }

}
Run Code Online (Sandbox Code Playgroud)

bha*_*tol 5

不管是Angular还是任何其他语言的其他类,问题都是

但是使用模块设置数据在语义上是否正确?

适用于任何阶层。

现在是一个Angular模块

  1. 其核心只是一个实例化的类,
  2. 重要的是,您可以在构造函数中注入服务,您可以在服务应做的领域中使用这些服务来完成任何您想做的事情。

然后问题归结为

类应该在构造函数中设置其数据吗?

构造函数的一般最佳实践是对其对象进行最少的设置,以使其易于执行繁重的工作,例如与外部资源进行交互。

因此,只要您的“数据设置”确实是私有且轻量的,就不应执行此初始化IMO。这只是不在模块级别进行数据初始化的一种情况。