Angular 4:组件变量依赖于另一个变量

时间:2017-09-28 19:24:17

标签: angular

好吧,所以我正在做一些调用ajax的东西,并收到一堆消息列表。消息处理或完成,由变量isProcessed标记,如果它等于0,则不是,如果它是1则是。

无论如何,我将收到的消息设置为名为'messageArray'的组件中的单个变量...我有2个单独的变量,称为已处理和已完成。这些函数基本上等于messageArray的过滤器。

但是我的问题是,当messageArray变量发生变化时,为什么这些变量不会改变,我该如何解决这个问题。这就是它的样子。

messageArray: Array<any> = []

  processing = this.messageArray.filter((message) => {
    return message.isProcessed === 0
  });

  completed = this.messageArray.filter((message) => {
    return message.isProcessed === 1
  });

感谢您的帮助!

编辑:  因此,当组件启动时,它最初将messageArray设置为空,如上例所示,但是,它也会立即使用服务进行AJAX调用以获取用户的消息,并将结果设置为messageArray。

  getMessages(info) {
    let messageJSON = JSON.parse(info);

    this.messageArray = messageJSON.m
  }

理想情况下,在使用新内容设置MessageArray之后,它还应该更改数组的“处理”和“已完成”,因为它们只是该数组的过滤版本。

EDIT2:  一个更简单的例子就是这个。我有两个变量。一个是'x'而另一个叫doubleX,其中doubleX = x * 2.我需要的是当变量x被改变时,我还需要这个变量'doubleX'来改变以使用'x'的新值。

1 个答案:

答案 0 :(得分:0)

import { MemberView } from 'MemberView'

export class MemberController{

    constructor(){

    }
}

这会根据messageArray: Array<any> = [] processing = this.messageArray.filter((message) => { return message.isProcessed === 0 }); completed = this.messageArray.filter((message) => { return message.isProcessed === 1 }); 的当前值计算processingcompleted,该值为空。所以这两个数组都是空的。正如您在问题中所说,当messagesArray发生更改时,需要计算这两个数组。所以代码应该是:

messageArray

您还应该停止输入任何变量。使用真实的类或接口作为元素的类型。