Angular 2中的输入与可注入

时间:2017-08-24 22:42:47

标签: angular

何时应该在Angular 2项目中使用@Input与@Injectable?例如,如果我有一个对象(没有方法)多个组件进行更改,我可以:

  1. 使用输入绑定
  2. 将对象绑定到其他组件
  3. 将对象放在自己的类中并添加@Injectable,然后将其注入需要对其进行更改的组件中。
  4. 您如何决定走哪条路?特别是因为使用Injectables,您不必处理如何将输入数据传递给子组件的层次结构。

2 个答案:

答案 0 :(得分:1)

除非它是一个非常简单的对象,否则我几乎总是倾向于使用Injectable类和依赖注入。直到第一个ngOnInit()生命周期钩子才会解析输入,因此至少一个Injectable类将提供更可预测的行为。创建输入链以将某些内容传递到多个级别是一个好兆头,您应该使用服务/注入。使用可注射类,您可以将它注入任何需要它的地方,而不必担心父组件也可以使用它。

答案 1 :(得分:0)

首先,让我们了解@Input@Injectable背后的概念:

两者都是元数据,它的意思是什么? 建筑外观是您必须在代码中添加元数据,以便 Angular知道该做什么

(组件注入)为什么@Input@Output

输入属性通常接收数据值。 输出属性公开事件生成器,例如EventEmitter对象。

(依赖注入)为什么@Injectable

@Injectable()将一个类标记为可用于实例化的注入器。一般来说,在尝试实例化未标记为@Injectable()的类时,注入器会报告错误。

有关您如何使用的更多信息和示例: @Input @Injectable