【问题标题】:declare properties in constructor angular 2在构造函数 Angular 2 中声明属性
【发布时间】:2016-11-07 18:47:40
【问题描述】:

我是一个刚进入angular 2的java程序员。在做官方教程的时候,我很惊讶地看到他们在构造函数中声明了这个属性,而不是在类的顶部。

我知道 Java 和 JS 有很大的不同,但是这样做之间有什么技术原因

  constructor(private router: Router ,private heroService: HeroService) {}

或者像这样

private router: Router
private heroService: HeroService

constructor( ) {}

【问题讨论】:

    标签: javascript angularjs typescript angular


    【解决方案1】:

    此时:

    private router: Router
    private heroService: HeroService
    

    只需声明RouterHeroService 类型的两个私有属性,

    这个:

    constructor(private router: Router, private heroService: HeroService) {}
    

    注入Router(和HeroService)的实例,另外创建两个私有属性,并在一个语句中将注入的服务实例分配给它们。

    为了更好地理解,这样做是一样的:

    private _router: Router;
    private _heroService: HeroService;
    
    constructor(router: Router, heroService: HeroService) {
        this._router = router;
        this._heroService = heroService;
    }
    

    使用“第一种方法”,您没有这些服务的实例。

    旁注:providers: [Router, HeroService] 您可能在您的某个Component Anntations 中的某个地方拥有它,只是为您的组件提供注入它们的可能性,但实际上并没有这样做,这就是为什么您最终可能总是通过您的@ 注入它们987654330@方法。

    【讨论】:

    • 这种做法有名称吗?与构造函数一起声明属性?
    猜你喜欢
    • 2017-06-02
    • 1970-01-01
    • 2016-04-25
    • 2018-07-12
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 2013-05-02
    相关资源
    最近更新 更多