mwi*_*son 7 javascript typescript angular
我有下面的OverlayComponent,它在异步调用期间用作处理微调器.叠加弹出没有问题但是当我尝试向其传递消息时,消息不会粘住.
子组件
import {Component, OnInit} from '@angular/core';
import {OverlayComponent} from "../../shared/app.mysite.overlay.component";
@Component({
moduleId: module.id,
selector: 'tracker-component',
templateUrl: '/public/app/templates/pages/racker/mysite.tracker.component.html',
styleUrls: ['../../../scss/pages/tracker/tracker.css'],
providers: [OverlayComponent]
})
export class TrackerComponent implements OnInit{
constructor(private overlayComponent: OverlayComponent) {
}
ngOnInit(): void {
this.overlayComponent.showOverlay("Testing 123"); //<-- shows overlay but doesn't show the message in the overlay
}
}
Run Code Online (Sandbox Code Playgroud)
子组件HTML
<div id="TrackerContainer">
<div class="col-lg-12" class="container">
<div class="jumbotron jumbotron-header">
<div>
<div id="pageTitle">Tracker</div>
</div>
</div>
<div class="content-container container">
<div *ngFor="let item of tracker.activeMenu.items">
<card-component [item]="item"></card-component>
</div>
</div>
</div>
</div>
<overlay-component [message]="overlayMessage"></overlay-component>
Run Code Online (Sandbox Code Playgroud)
OverlayComponent.ts
import { Component } from '@angular/core';
@Component({
selector: 'overlay-component',
templateUrl: '/public/app/templates/shared/mysite.overlay.component.html',
styleUrls: ['../../app/scss/shared/overlay.css']
})
export class OverlayComponent {
message: string;
//message: string = 'testing...'; <-- this updated the message just fine
showOverlay(msg: string) {
this.message = msg; // <-- the right value comes through in the msg variable but doesn't update in the page
$('.overlay-component-container').show();
}
hideOverlay() {
$('.overlay-component-container').hide();
this.message = '';
}
}
Run Code Online (Sandbox Code Playgroud)
OverlayComponent.html
<div class="overlay-component-container">
<div class="overlay-component">
<div class="overlay-message">{{message}}</div>
<div>
<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
该问题可能是由以下几个原因引起的:
您在这里不需要这个,这仅适用于服务,不适用于组件
providers: [OverlayComponent]
Run Code Online (Sandbox Code Playgroud)
这不是获取对另一个组件的引用的方法,您可能没有正确的实例。
constructor(private overlayComponent: OverlayComponent)
Run Code Online (Sandbox Code Playgroud)
实际上是<overlay-component>在 Tracker 组件的 HTML 内部吗?
另外,跟踪器组件上的overlayMessage 属性在哪里?(如下所用)
<overlay-component [message]="overlayMessage"></overlay-component>
Run Code Online (Sandbox Code Playgroud)
只需确保过度组件位于跟踪器组件内部,删除this.message = msg; from showOverlay()并使用双向数据绑定来更改消息。
IE<overlay-component [message]="overlayMessage"></overlay-component>
如果添加overlayMessage: string; 到您的 Tracker 组件(或覆盖层的父组件)然后您需要做的就是在父组件中更新它,您的覆盖层组件将拾取更改。
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |