管道角度变化检测

时间:2018-08-22 15:44:19

标签: angular angular-pipe angular2-changedetection

我对变更检测和管道有问题。我找不到解决它的好方法。

我创建了一个小项目来复制它here。转到/ monitor路线。

当您单击“更改”按钮时,它将更改数组中第一项的值,但不会更新UI。

如果我使用以下方法在变更处理程序中重新创建另一个对象,它将起作用

class NotMoveA
{
public:
  NotMoveA() = default;
  ~NotMoveA() = default;
  NotMoveA(const NotMoveA &) = delete;
  NotMoveA(NotMoveA &&other) = default;
  NotMoveA &operator=(const NotMoveA &) = delete;
  //will B deleted w/o warning:
  NotMoveA &operator=(NotMoveA &&other); 
  // ...
private:
  const std::string badDataMemberDisallowingMoveAssignment;
  // ...
};

NotMoveA & NotMoveA::operator=(NotMoveA &&other) = default;

但是我不想那样做。我需要保留相同的对象引用。

问题出在vital-value.component.html中的管道

= default

如果我改用它就可以了

this.state[0] = Object.assign({}, this.state[0], { value: 999.99 });

是否可以保留管道但可以进行刷新?

谢谢!

1 个答案:

答案 0 :(得分:1)

尽管不建议这样做,但请尝试使管道不纯。

@Pipe({
  name: 'vitalFormat',
  pure: false
})

但要注意对您应用程序性能的影响。确实不建议使用impure管道。

在这里通读

  

Angular在每个组件更改检测周期内执行不纯管道。每次击键或移动鼠标时,都会经常调用不纯管道。

     

请牢记这一点,小心安装不纯净的管道。昂贵的,长时间运行的管道可能会破坏用户体验。