【发布时间】:2020-12-18 01:04:39
【问题描述】:
如何通过更新内容元素上的选择器来更新 ng-content?
我在 app.component.html 中有代码:
<my-slider>
<img src="../../assets/logo1.png" />
<img src="../../assets/logo2.png" />
</my-slider>
这是 my-slider.component.ts 的代码:
@Component({
selector: 'my-slider',
template: '<ng-content select=".render" ></ng-content>
<button (click)="render()"> Show</button>',
styleUrls: ['./slider.component.css']
})
export class SliderComponent {
@ContentChildren(ImgComponent) img: QueryList<ImgComponent>;
constructor() { }
render() {
this.img.last.show();
}
}
还有 ImgComponent.ts
@Component({
selector: 'img',
template: '',
})
export class ImgComponent {
render: boolean = false;
constructor(
private elRef: ElementRef,
private renderer: Renderer2
) { }
show() {
this.render = true;
this.renderer.addClass(this.elRef.nativeElement, 'render');
}
hide() {
this.render = false;
this.renderer.removeClass(this.elRef.nativeElement, 'render');
}
}
当我单击按钮时,会向元素添加一个类,但 ng-content 永远不会更新。我能以某种方式让它工作吗?或者如何过滤 ng-content 中的组件?
【问题讨论】:
-
我认为
ng-content可能不是一个非常适合的人选。为什么不制作一个包含renderboolean 和 img src 的对象字典,然后通过这些对象进行 ngFor 并切换渲染属性?
标签: javascript angular ng-content