相当于ReactDOM.render的Angular2

相当于ReactDOM.render的Angular2,angular,reactjs,components,Angular,Reactjs,Components,背景 启动ReactJS组件的正常方式是: ReactDOM.render(<MyComponent />, document.getElementById('root')); platformBrowserDynamic().bootstrapModule(MyModule); 其中MyModule在“声明”和“引导”下注册了MyComponent。MyModule还可能包含一些服务。MyComponent本身定义了HTML选择器 问题 Angular2方式引发了一些React

背景

启动ReactJS组件的正常方式是:

ReactDOM.render(<MyComponent />, document.getElementById('root'));
platformBrowserDynamic().bootstrapModule(MyModule);
其中MyModule在“声明”和“引导”下注册了MyComponent。MyModule还可能包含一些服务。MyComponent本身定义了HTML选择器

问题

Angular2方式引发了一些ReactJS方式所没有的问题:

  • 在页面生命周期的后期,如何在页面的另一部分第二次呈现MyComponent
  • 如何首先检索和使用模块中的服务,并仅在需要时呈现MyComponent

    (对于您的答案,考虑它是否在ANGARLAR2执行上下文之外或内部工作,如果这有区别)

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

    2.
    不确定我是否误解了你,如果我误解了,请发表评论,我会再次解释

    您可以在RootComponent中使用任何声明的服务(以及属于NgModule的任何其他类)。angular中的每个组件都定义了生命周期钩子(),您可以点击。例如,如果您感兴趣的话,您可以在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();
        }
    }
    

    1.您假设我在现有的角度上下文中运行它。如果我想在网页的另一个非angular管理的部分(例如在引导模式下)再次显示它,该怎么办。你是在假设我有地方放置组件。如果我想问服务一些问题,如果它不知道答案,那么打开一个引导模式并初始化其中的组件以请求用户输入怎么办?顺便说一句,这些不是人为的场景,这些是实际的用例。我可能会添加一些简单的ReactJS。我感觉你没有使用angular 2,并试图将一种思维定势压缩到一个毫无意义的环境中。bootstraping和不是一个可以动态使用的地方。所有这些场景都应该发生在RootComponent内部。角度组件存在于角度上下文中。