你好,我刚接触过角,有个小问题,下面是我的代码:
import { Component, OnInit,Input, SimpleChange, OnChanges } from '@angular/core';
import { Sensor } from '../../shared/sensor.model';
import { MessageService } from '../../shared/message.service';
@Component({
selector: 'app-sensor-list',
templateUrl: './sensor-list.component.html',
styleUrls: ['./sensor-list.component.css']
})
export class SensorListComponent implements OnInit {
sensors:Sensor[]=[];
sensorsId : number[]=[];
@Input() messages:JSON[]=[];
constructor(private messageService: MessageService) { }
ngOnInit() {
setInterval(()=>{
this.messages=this.messageService.getMqttdata();
console.log("updating Sensors sources")
},5000);
}
ngOnChanges(changes SimpleChange }) {
console.log("sources has been modified")
}在ngOnInit中,我每5秒收集一次数据,并将这些数据存储到作为输入()的消息变量中,因此应该每5秒触发一次ngOnChanges?我错过了什么?
发布于 2018-08-23 19:28:26
@Input属性应该是该组件的父级传递它的内容。它不应该从这个组件内部的服务中接收。
如果是这样的话,这个服务调用应该驻留在使用此组件的父组件中。
因此,如果您有一个组件(比如selector:app-home),那么在app-home模板中,您将使用app-sensor-list,然后从那里传递messages。
与此类似的东西:
<app-sensor-list [messages]="messages"></app-sensor-list>同样,在app-home组件的TypeScript类中,您将进行服务调用:
ngOnInit() {
setInterval(()=>{
this.messages=this.messageService.getMqttdata();
console.log("updating Sensors sources")
},5000);
}https://stackoverflow.com/questions/51992973
复制相似问题