- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的@ViewChildren 行为,对应于 ngFor 生成的子组件。 @ViewChildren 查询在很长一段时间内都看不到数组中的元素。我所有的代码都在 Plunker - 打开控制台查看。
这是我的主要组成部分:
@Component({
selector: 'my-app',
template: `
<button (click)="addInternalComponent()">Add internal component</button>
<app-internal #internals *ngFor="let i of indexes" [index]="i
(afterViewInit)="onAfterViewInit()"></app-internal>
`,
})
export class App {
@ViewChildren('internals') internals: QueryList<InternalComponent>;
indexes = [];
addInternalComponent() {
console.log('adding internal component!');
this.indexes.push(this.indexes.length);
console.log('Not complete list', this.internals._results);
}
onAfterViewInit() {
console.log('onAfterViewInit - still not complete list', this.internals._results);
}
}
export class InternalComponent implements AfterViewInit {
@Input()
index;
@Output()
afterViewInit: EventEmitter<any> = new EventEmitter<any>();
ngAfterViewInit() {
this.afterViewInit.emit();
}
}
最佳答案
被通知的标准方式是 QueryList
的内容已更改是订阅其changes
事件在 ngAfterViewInit
:
@ViewChildren("internals") internals: QueryList<InternalComponent>;
ngAfterViewInit() {
this.internals.changes.subscribe((list: QueryList<InternalComponent>) => {
// The updated QueryList is available here (with list or with this.internals)
this.doSomethingWithInternals(list);
this.doSomethingWithNewInternal(list.last);
...
});
}
afterViewInit
事件在
InternalComponent
,您可以将组件的引用作为事件的参数传递:
export class InternalComponent implements AfterViewInit {
@Output() afterViewInit = new EventEmitter<InternalComponent>();
ngAfterViewInit() {
this.afterViewInit.emit(this);
}
}
并在事件处理程序中检索组件:
(afterViewInit)="onAfterViewInit($event)"
onAfterViewInit(component: InternalComponent) {
this.useNewInternalComponent(component);
...
}
关于Angular ViewChildren 不会立即看到 ngFor 中的所有 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51729355/
在 angular2 组件中使用嵌入时,我的“ViewChildren”似乎无法检测到这些组件。当我制作一个直接定义相同组件的组件时,它就可以正常工作。现在有人有办法完成这项工作吗? 最佳答案 您可以
在 angular2 组件中使用嵌入时,我的“ViewChildren”似乎无法检测到这些组件。当我制作一个直接定义相同组件的组件时,它就可以正常工作。现在有人有办法完成这项工作吗? 最佳答案 您可以
我正在尝试控制组件的子实例,但无法通过错误。我正在尝试遵循 this issue 的答案. 父组件Sequence包含 SequenceStep 的子组件.父级包含以下声明: @ViewChildre
为什么我不能在@ViewChildren 中传递多个组件? 目前有这个: @ViewChildren(ColorFilterComponent, TransmissionFilterComponen
包含@ViewChildren 的父组件不会为动态创建的组件返回结果。 容器组件包含一个highlight 指令,而动态生成的组件在其模板中包含一个highlight 指令。当使用 @ViewChil
我创建了一个包含表单 的自定义组件.我有一个 父组件 有一个数组: @ViewChildren(AddressComponent) addressComponents: QueryList; 所以家
我想创建一个父指令,它根据子项的值显示或隐藏子项。为此,我采用了父结构指令和带有值的子指令的方法。为简单起见,没有值: 1 2 3 4 要访问 child ,我在父指令中使用以下行
目前,我可以动态加载单个组件并将其显示在 ViewChild 中,如下所示: @Component({ selector: '...', template: '' }) export cl
给定以下标记 我在一个组件中定义 @ViewChildren('val') rows; 然后我禁用了第一个输入元素 this.rows.first.nativeElement.disab
我正在尝试在我的 Angular 应用程序中实现一些功能。我创建了一个父指令 appParent 和另外两个指令 appChildAbc 和 appChildXyz。 我想要做的是,每当我将 appP
给定以下标记 我在一个组件中定义 @ViewChildren('val') rows; 然后我禁用了第一个输入元素 this.rows.first.nativeElement.disab
我正在尝试在我的 Angular 应用程序中实现一些功能。我创建了一个父指令 appParent 和另外两个指令 appChildAbc 和 appChildXyz。 我想要做的是,每当我将 appP
假设我有一个要测试的组件,它使用了一个非常复杂的组件。此外,它使用通过 @viewChildren 获得的引用来调用它的一些方法。例如 @Component({ moduleI
我正在尝试访问 ViewChildren 的 native 元素 => HTMLElements,但这样做时我一直收到 undefined 响应。看一看: 列表.html .. .. 列表.ts
我想在一次 ng for 后访问组件的所有 viewChildren,例如: 现在,我有一个像这样的 ViewChildren: @ViewChildren('item') item: QueryL
我有以下DOM结构 我可以使用
这个问题在这里已经有了答案: How can I select an element in a component template? (14 个答案) 关闭 6 年前。 在我的 home.html
我有一个 angular2 组件,其模板如下所示: 我希望能够使用 ViewChildren 检索对所有 ng-template 元素的引用,但我不知道我需要在括号之间传递的类
我创建了一个自定义组件,我将其放置在 for 循环中,例如 其输出将是: 我想知道当这些组件的数量可能不同时,如何使用@viewchild 语法或任何其他方式获取对这些组件的引用
我有一个奇怪的@ViewChildren 行为,对应于 ngFor 生成的子组件。 @ViewChildren 查询在很长一段时间内都看不到数组中的元素。我所有的代码都在 Plunker - 打开控制
我是一名优秀的程序员,十分优秀!