gpt4 book ai didi

angular - ContentChildren,获取组件和原生Element

转载 作者:太空狗 更新时间:2023-10-29 18:20:14 25 4
gpt4 key购买 nike

我一直在寻找 Angular 的文档和源代码,但到目前为止一无所获。

import {
ContentChildren,
QueryList
} from '@angular/core';
import { AwesomeComponent } from './awesome.component';

@Component({
selector: 'cool-dad',
templateUrl: './cool-dad.template.html'
})
export class CoolDadComponent {
@Input() loop = false;
@Input() automatic = false;
@ContentChildren(AwesomeComponent) items: QueryList<AwesomeComponent>;

someFunc() {
this.items.forEach(item => { console.log(item)});
}
}

通过上面的代码,我获得了对组件的引用,我可以设置它的属性并调用它的公共(public)方法。这很好,但我还需要访问它的 html 属性,例如宽度、高度等。

import {
ContentChildren,
ElementRef,
QueryList
} from '@angular/core';
import { AwesomeComponent } from './awesome.component';

@Component({
selector: 'cool-dad',
templateUrl: './cool-dad.template.html'
})
export class CoolDadComponent {
@Input() loop = false;
@Input() automatic = false;
@ContentChildren(AwesomeComponent, { read: ElementRef }) items: QueryList<AwesomeComponent>;

someFunc() {
this.items.forEach(item => { console.log(item)});
}
}

通过上面的代码,我获得了 native 元素,因此我可以访问所有 html 属性,但我失去了对组件方法的所有访问权限。

我怎样才能同时获得两者?

最佳答案

只需在 AwesomeComponent 的构造函数中声明以下内容:

constructor(public elem: ElementRef) {}

这样您就可以访问公共(public)属性 elem 并访问每个组件的 html 属性:

someFunc() {
this.items.forEach(item => {console.log(item.elem.nativeElement.style.someHTMLProperty)});
}

关于angular - ContentChildren,获取组件和原生Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com