ChangeDetectorRef的detectChanges不会触发更改检测

时间:2019-01-11 08:31:39

标签: angular typescript

我想创建一个手风琴组件。一次只能打开一个标签。一切正常,直到我将changeDetection更改为ChangeDetectionStrategy.OnPush。我正在调用detectChanges方法,但是某种程度上它不会触发changeDetection

我的手风琴设计如下:

  • AccordionTabComponent是孩子,它知道选项卡是打开还是关闭。通过forwardRef,他可以将父母称为closeOthers方法。
  • AccordionComponent是父组件。通过@ContentChildren,它了解子选项卡,并管理关闭/打开行为。
  • 当用户通过单击打开选项卡时,子代将调用ID为当前打开的closeOthers父方法。当父组件关闭所有打开的选项卡时,调用detectChanges。它应该触发更改检测并更新DOM。但是这最后的事情不会发生。

我不确定是什么原因造成的,也许是因为<ng-content>造成的?

Stackblitz example

1 个答案:

答案 0 :(得分:2)

由于您尝试使用app.cpp: In member function ‘std::pair<int,std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char> > > ResponseFunction::get(InputValidator)’: app.cpp:91:46: error: no matching function for call to ‘make_pair(int, std::__cxx11::string&, const char [1])’ return std::make_pair(0,empty, ""); 变量关闭其他标签,因此需要在selected变量的setter内添加一个setter和detectChanges

updated stackblitz