在组件以角度2加载时运行代码,类似于角度1 app.run

时间:2016-08-20 07:17:12

标签: angular angular-component-router

从角度2开始 我有几个像

这样的问题

在angular one中,我曾经在路由配置中定义一个变量,并且基于该变量,我在app.run()中编写了一个代码,它将检查该变量是否为true,应该发生什么。 所以它做的是当路由器被更改时它检查那个条件。

现在如果我想在角度2中实现同样的事情。 我们没有app.run()而是我们有bootstrap,是否可以在路由器配置中定义用户定义的变量?

我尝试搜索但找不到我的问题的答案。如果对我提出的问题有任何澄清,请告诉我。

谢谢

1 个答案:

答案 0 :(得分:1)

当在angular2中加载组件时,会调用生命周期OnInit - 如果要在加载新组件时从用户定义的配置中检查某些内容,可以在其中编写代码,如:

import { Component, OnInit } from '@angular/core'

@Component({
    ...
})
export class MyComponent implements OnInit {

    ngOnInit() {
        // write the check for the config value in here
    }
}

您唯一需要做的就是导入用户定义配置的文件,并在ngOnInit方法中为您定义的每个组件使用。

另一种方法是订阅由angular导出的Location服务,每次位置url更改时运行检查。为避免重复订阅,您需要将此代码放在主AppComponent文件中。您需要做的唯一其他事情是拥有一个全局服务,您可以将其导入到包含某种标志的所有组件中,这些标志可以告诉您配置值是否设置为某个值。

import { Component, OnInit } from '@angular/core'
import { Location } from '@angular/common'

... METADATA ...

export class AppComponent implements OnInit {

    constructor(private location: Location) {}

    ngOnInit() {
        this.location.subscribe((value) => {
            // do check in here / set value inside global service
        });
    }