如何在Angular2中注入相同组件的新实例

[更新]请阅读评论历史以了解上下文.

所有:

我对angular2很新,当我按照其快速入门指南时,有一个问题让我困惑:

我将app.component.ts简化为:

import { Component } from "angular2/core";
@Component({
    selector: "my-app",template: "<div>{{title}}</div>"
})
export class AppComponent {
        title = "Tour of Heroes" + Math.random();
}

我在index.html中添加了另一个my-app标记,如:

<body>
    <my-app>Loading...</my-app>
    <my-app>Loading...</my-app>
  </body>

我想知道为什么第二个不能渲染?

与此相关的另一个问题是:

如果我把两个相同组件的实例,每个都保留自己的成员变量,但如果我将服务注入一个组件,那么所有组件实例共享相同的服务实例,我发现唯一明显的差异是它们使用不同的注释(其他除此之外,它们都导出一个类:@Component和@Injectable,一个在指令数组中,另一个在providers数组中.我想知道这两个注释是否告诉angular如何处理实例或指令数组和providers数组呢?

解决方法

Angular2不允许在HTML页面中两次引导相同的组件.

但是,如果您想要在同一个HTML页面中,则可以引导不同的应用程序组件.

有关详细信息,请参阅此文档:

> https://angular.io/docs/ts/latest/api/platform/browser/bootstrap-function.html(“引导多个应用程序”部分)

编辑

关于你的第二个问题,你需要知道@Component和@Injectable是装饰器.他们负责通过基于配置的元数据在构造函数中提供权限依赖实例来“包装”目标实例并允许依赖注入.

关于分层注入器,您可以查看此链接

> What’s the best way to inject one service into another in angular 2 (Beta)?

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...