Angular2相当于ReactDOM.render

时间:2017-02-03 17:34:46

标签: angular reactjs components

背景

启动ReactJS组件的常规方法是:

Mills: 1486143107
Seconds: 1486143
Milliseconds since midnight: 1486143107
Seconds since midnight: 0

启动Angular2组件的常规方法是:

ReactDOM.render(<MyComponent />, document.getElementById('root'));

MyModule的MyComponent在'declarations'和'bootstrap'下注册。 MyModule也可能包含一些服务。 MyComponent本身定义了HTML选择器。

问题

Angular2方式调用了一些ReactJS方式没有的问题:

  1. 在页面生命周期的后期,如何在页面的另一部分第二次呈现MyComponent?
  2. 如何首先检索和使用模块中的服务,只在需要时才渲染MyComponent?
  3. (对于你的答案,考虑它是否在angular2执行上下文之外或之内工作,如果这有所不同)

1 个答案:

答案 0 :(得分:0)

1。
您不希望重用RootComponent,因为这会导致堆栈溢出异常。这会发生,因为RootComponent(显然)是你的应用程序root。将RootComponent放在RootComponent中会导致永远不会停止的递归调用。

2。
不确定我是否在这里误解了你,如果我这样做,请发表评论,我会再次尝试解释。

您可以在RootComponent(以及属于NgModule的任何其他类)中使用任何声明的服务。角度中的每个组件都定义了您可以使用的生命周期钩子(https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html)。例如,您可以在RootComponent初始化之前使用您的服务,如果这是您感兴趣的内容。请参阅此示例:

import { Component, OnInit } from '@angular/core';
import { MyService } from '../Shared/my-service';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

    constructor(private _service: MyService) {
        // This is executed before ngOnInit()
        this._service.doStuff();
    }

    ngOnInit() {
        // Here we can do more stuff when the component is "starting"
        this._service.doMoreStuff();
    }
}