感谢您的时间。
我有三个组件:
- 主页面组件
- 一个按钮,使用
angular/cdk/overlay
overlay.create
来创建第三个组件 - 附加到按钮上的小框,显示文本
目标是,在用户点击按钮时显示有关页面的信息。 我不能使用@Input
,因为每个页面的信息格式(h1
,p
,组件)都会更改。
我的问题
如何将HTML从主组件传递到小框组件?
或者
如何截取ng-content
的内容并将其发送到小框组件?
主要
<app-btn-info>
<mat-icon>info</mat-icon>
<h1>Test</h1>
<p>This is a test</p>
</app-btn-info>
@Component({
selector: 'app-btn-info',
templateUrl: './btn-info.component.html',
styleUrls: ['./btn-info.component.scss']
})
export class BtnInfoComponent {
@ViewChild('button') button: MatIcon;
constructor(private overlay: Overlay) { }
public onClick() {
this.overlay.create({
positionStrategy: this.overlay.position().connectedTo(this.button._elementRef,
{ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'top' }
)
});
}
}
<button #button mat-icon-button color="warn" matTooltip="Choose an option" (click)="onClick()">
<mat-icon>refresh</mat-icon>
</button>
小盒子
<!-- From Main Component - But open by BtnInfoComponent -->
<ng-content></ng-content>