angular2-changedetection相关内容
我有一个使用 Angular 2 的 Electron 应用程序.该应用程序工作正常,直到使用 ipcRenderer 从本地 JSON 文件加载数据.然后,作用于服务中数据的按钮不再触发更改检测过程来更新视图.我创建了一个简化的示例应用程序来演示这里的问题:https://github.com/marshmellow1328/electron-angular-change-detection
..
我已经对此错误进行了一些阅读和调查,但不确定适合我的情况的正确答案是什么.我知道在开发模式下,更改检测会运行两次,但我不愿意使用 enableProdMode() 来掩盖问题. 这是一个简单的例子,表格中的单元格数量应该随着 div 的宽度扩大而增加.(注意div的宽度不仅仅是屏幕宽度的函数,所以@Media不能轻易应用) 我的 HTML 如下所示 (widget.template.h
..
尝试使用 async 管道通过 angular 2 组件中的流在窗口调整大小时呈现窗口大小: 尺寸:{{size$ |异步 |json}}
const windowSize$ = new BehaviorSubject(getWindowSize());Observable.fromEvent(window, 'resize').map(getWindowSize).subscr
..
我正在尝试按照以下方式构建共享服务 import {Injectable,EventEmitter} from 'angular2/core';从“rxjs/主题"导入{主题};从 'rxjs/subject/BehaviorSubject' 导入 {BehaviorSubject};@Injectable()导出类 SearchService {public country = new Sub
..
我有一个父组件 (CategoryComponent)、一个子组件 (videoListComponent) 和一个 ApiService. 我的大部分工作都很好,即每个组件都可以访问 json api 并通过 observables 获取其相关数据. 目前视频列表组件只获取所有视频,我想将其过滤为特定类别的视频,我通过通过 @Input() 将 categoryId 传递给孩子来实现
..
如何在 Angular 2 中强制重新渲染组件?为了使用 Redux 进行调试,我想强制一个组件重新渲染它的视图,这可能吗? 解决方案 渲染发生在更改检测之后.要强制更改检测,以便将更改的组件属性值传播到 DOM(然后浏览器将在视图中呈现这些更改),这里有一些选项: ApplicationRef.tick() - 类似于 Angular 1 的 $rootScope.$digest(
..
ChangeDetectorRef.markForCheck() 和 ChangeDetectorRef.detectChanges() 有什么区别? 我只找到关于 SO 的信息,以了解 NgZone.run() 之间的区别,但不在这两个函数之间. 对于仅参考文档的答案,请举例说明一些实际情况以选择其中之一. 解决方案 detectChanges() : 无效 检查变
..
问题 显示模板中相应元素后获得@ViewChild的最优雅方式是什么? 下面是一个例子.也可以使用 Plunker. Component.template.html:
..
我知道如果我在模板中使用方法调用,它会一遍又一遍地执行(不理想).我已经通过使用纯管道和记忆方法的组合解决了这个问题.但我也使用反应式表单,并在我的模板中使用 myFormGroup.get('myFormControl').value 来获取值.这是否也会像我的组件中的方法一样重复执行,或者 Angular 是否有适当的策略来防止这种情况发生?一个用法示例是使用 *ngIf 并让条件基于表单的值
..
请向我解释为什么我总是收到此错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改. 显然,我只在开发模式下得到它,它不会发生在我的生产版本中,但这很烦人,而且我根本不明白在我的开发环境中出现不会出现的错误的好处在 prod 上——可能是因为我缺乏理解. 通常,修复很容易,我只是将导致错误的代码包装在 setTimeout 中
..
我正在编写一个具有属性 Mode(): string 的 Angular 组件. 我希望能够以编程方式设置此属性,而不是响应任何事件. 问题在于,在没有浏览器事件的情况下,模板绑定 {{Mode}} 不会更新. 有没有办法手动触发这种变化检测? 解决方案 尝试以下方法之一: ApplicationRef.tick() - 类似于 AngularJS 的 $rootS
..
我正在尝试从 的选项集中自动选择第一个值 导出类 ExampleComponent 实现 OnInit, AfterViewInit {@ViewChildren('auto') matAutocomplete: QueryList;构造函数(私有 cdr:ChangeDetectorRef){}ngAfterViewInit() {this.fo
..
我知道如果我在模板中使用方法调用,它会一遍又一遍地执行(不理想).我已经通过使用纯管道和记忆方法的组合解决了这个问题.但我也在使用反应式表单,并在我的模板中使用 myFormGroup.get('myFormControl').value 来获取值.这是否也会像我的组件中的方法一样重复执行,或者 Angular 是否有适当的策略来防止这种情况发生?一个用法示例是使用 *ngIf 并根据表单的值设置
..
我刚刚使用 Angular2 RC3(使用 Angular-CLI)尝试了我的第一个应用程序,但我对此感到迷茫...... 我对变量 word 的“更改检测"有问题.我更新了 Observable 的 subscribe 方法中的 word 变量,但没有检测到任何变化. app.component.ts import { Component, Inject, OnInit } fro
..
我在 Angular 中有一个小组件,其方法(目前)设置超时并更改变量的值. import { Component, ChangeDetectionStrategy } from '@angular/core';@成分({选择器:'我的组件',templateUrl: './my-view.html',styleUrls: ['./my-view.scss'],changeDetection:
..
非常标准的情况. 有一个父组件.在带有 *ngFor 的模板中生成了 20 个子组件 .使用 [ngStyle] 指令和调用函数 setStyles() 的模板表达式设置的子组件样式. 问题(也可能不是)是,当在一个特定子元素上发出任何事件时,表达式 setStyles() 会为每个子组件执行两次. 因此,如果我们在示例中单击一个特定项目,并且我们有 20 个 组件 - setS
..
我们的团队(不仅是我的电脑)在 Angular 2 中存在一个奇怪的渲染问题,这只发生在 Chrome 中. 即在应用导航或应用中刷新时,DOM中的许多项目是不可见的.例如.包含文本的段落和标题,但不会为最终用户呈现文本,但可以在检查器 DOM 中看到文本. 如果您在检查器中编辑随机 CSS 属性,DOM 将重新获得可见性.这个 CSS 甚至不必适用于手头的不可见 DOM 项,唉.不可
..
我有一个关于变更检测的简单问题. 我有一个组件和一个(全局)服务,里面有一个布尔值.如果该布尔值发生变化,如何让组件侦听该布尔值并执行函数? 谢谢! 解决方案 根据布尔值如何更改,您可以将其公开为服务上的 Observable,然后订阅该流在您的组件中.您的服务将类似于: @Injectable()导出类 MyBooleanService {myBool$: Observab
..
我正在编写一个 angular 2 应用程序,出于性能原因,我尝试在任何地方使用 ChangeDetectionStrategy.OnPush.我有一个需要 OnPush 才能顺利工作的复杂组件,其中包含另一个显示表单的组件(使用 FormBuilder 创建).我现在注意到当我点击一个滑块时,它的内部值会更新(即 form.value),但滑块组件并没有可视化这个新值,即它卡在旧位置. 我
..
我试图检测使用反应式表单构建的一个特定表单元素的变化. 我使用 *ngFor 和 *ngSwitch 指令来构建响应式表单,如 https://angular.io/docs/ts/latest/cookbook/dynamic-form.html#.我的表单当前包含输入类型 text 和 file.我使用更改事件来捕获文件上传任务,因此我需要检测 file 输入元素中的更改,而不是 tex
..