我对变更检测和管道有问题。我找不到解决它的好方法。
我创建了一个小项目来复制它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 });
是否可以保留管道但可以进行刷新?
谢谢!
答案 0 :(得分:1)
尽管不建议这样做,但请尝试使管道不纯。
@Pipe({
name: 'vitalFormat',
pure: false
})
但要注意对您应用程序性能的影响。确实不建议使用impure
管道。
在这里通读
Angular在每个组件更改检测周期内执行不纯管道。每次击键或移动鼠标时,都会经常调用不纯管道。
请牢记这一点,小心安装不纯净的管道。昂贵的,长时间运行的管道可能会破坏用户体验。