Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 服务时的角度变化_Angular - Fatal编程技术网

Angular 服务时的角度变化

Angular 服务时的角度变化,angular,Angular,因此,我有一个课程如下: item.model.ts import { Injectable } from '@angular/core'; @Injectable() export class itemView { id: any; } 然后,在一个组件文件中有一个更改ID的函数: 组件A.ts constructor(public itemID: itemView) {}; getItemID(number){ //"<div (swipe)="getItemID(

因此,我有一个课程如下:

item.model.ts

import { Injectable } from '@angular/core';

@Injectable() 
export class itemView {
   id: any; 
}
然后,在一个组件文件中有一个更改ID的函数:

组件A.ts

 constructor(public itemID: itemView) {};

 getItemID(number){ //"<div (swipe)="getItemID(number)"></div>   
    this.itemID.id = this.selection[number];// ex: value change to "2"
 } 

但我没有得到任何结果。关于我做错了什么有什么建议吗?

您应该让
itemView
负责更改,并通知组件那里发生了什么。ngOnChanges是一个生命周期挂钩,当@Input属性更改时触发。因此,如果您没有通过输入指令将id从组件a传递到组件b,那么钩子就不会触发。Camaron是对的,您需要一个rxjs主题来将更改传输到正在侦听的组件。这里有一篇关于这种组件通信的好文章()谢谢大家。我会读这篇文章。非常感谢。您应该让
itemView
负责更改,并通知组件那里发生了什么。ngOnChanges是一个生命周期挂钩,当@Input属性更改时触发。因此,如果您没有通过输入指令将id从组件a传递到组件b,那么钩子就不会触发。Camaron是对的,您需要一个rxjs主题来将更改传输到正在侦听的组件。这里有一篇关于这种组件通信的好文章()谢谢大家。我会读这篇文章。非常感谢。
import { SimpleChanges } from '@angular/core';

ngOnChanges(changes: SimpleChanges) {
    if (changes[this.itemID.id]) {
       console.log("It changed");
    }
}