我有父组件和子组件。在父组件中有BehaviourSubject<SomeObject[]>()
。
export interface SomeObject(){
field: number;
...
editable: boolean
}
我不能将整个对象传递给子组件,我必须在此之前进行筛选,因此输入值如下所示:
childInputData = parentBehaviourSubject.value.filter(x=>...);
在子组件UI上,如果字段editable = false
,则会显示编辑图标,单击此图标后,它会更改editable = true
,并启用某些字段进行编辑我问题是,我希望将克隆数组作为子输入传递当我更改
childInputData = _.cloneDeep(parentBehaviourSubject.value.filter(x=>...));
用户界面编辑图标停止React任何点击。我真的不知道为什么。我错过了什么?
1条答案
按热度按时间3qpi33ja1#
为什么要在一个对象上调用
filter(...)
呢?这个函数是用于数组的。如果你在behaviorsubject上调用.value
,你基本上是取这个对象的当前值,而忽略那些将来会发出的值。如果您希望每次都将当前值传递给子组件,则应使用
pipe
您的值并订阅它(使用async
管道)。下列程式码会从
parentBehaviourSubject
建立每个发出值复本的可观察项目:在HTML中,您可以使用以下代码将此值传递给您的孩子: