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

时间:2017-03-01 10:45:17

标签: 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',
        }];

    }

}

1 个答案:

答案 0 :(得分:4)

无论是Angular还是其他任何语言的类,问题

  

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

适用于任何课程。

现在是一个Angular模块

  1. 其核心只是一个实例化的类
  2. 重要信息您可以在构造函数中注入服务,您可以在服务应该执行的领域中使用这些服务执行任何操作。
  3. 然后问题归结为

      

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

    构造函数的一般最佳实践是执行对象所需的最小设置,以便更轻松地执行繁重的工作,例如与外部资源交互。

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