首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未触发ngOnChanges

未触发ngOnChanges
EN

Stack Overflow用户
提问于 2018-08-23 19:25:47
回答 1查看 239关注 0票数 1

你好,我刚接触过角,有个小问题,下面是我的代码:

代码语言:javascript
复制
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?我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 19:28:26

@Input属性应该是该组件的父级传递它的内容。它不应该从这个组件内部的服务中接收。

如果是这样的话,这个服务调用应该驻留在使用此组件的父组件中。

因此,如果您有一个组件(比如selectorapp-home),那么在app-home模板中,您将使用app-sensor-list,然后从那里传递messages

与此类似的东西:

代码语言:javascript
复制
<app-sensor-list [messages]="messages"></app-sensor-list>

同样,在app-home组件的TypeScript类中,您将进行服务调用:

代码语言:javascript
复制
ngOnInit() {
    setInterval(()=>{
      this.messages=this.messageService.getMqttdata();
      console.log("updating Sensors sources")
    },5000);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51992973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档