代码之家  ›  专栏  ›  技术社区  ›  El Dude

爱奥尼亚InnerHTML更新

  •  0
  • El Dude  · 技术社区  · 6 年前

    尝试更新位于 component 具有 innerHTML ,值取决于用户交互。数据的输入正确 http 但它只在我单击组件时更新,而不是在 drawerHTML 已更新。

    编辑 我忘了提那个了 抽屉式TML 在的cordova插件中设置 谷歌地图 标记单击回调。我认为这是罪魁祸首,因为它可能在设置值的异步回调中运行,但似乎不需要更新元素。

    marker.addEventListener(GoogleMapsEvent.MARKER_CLICK).subscribe((data) => {
        this._myProvider.getData(marker.getTitle()).subscribe((data) =>{
              this.drawerHTML = this._prepare(data);
              console.log(this.drawerHTML);
        });
    });
    

    这里显示了:

    <content-drawer [options]="drawerOptions">
      <ion-toolbar>
        <ion-buttons start>
          <button ion-button color="light" clear (click)="showDrawer()">
              showDrawer
          </button>
        </ion-buttons>
    
      </ion-toolbar>
      <ion-content>
        <div [innerHTML]="drawerHTML">
    
        </div>
        <button ion-button round small (click)="hideDrawer()">Close</button>
      </ion-content>
    </content-drawer>
    

    content-drawer 在单独文件中设置为离子/角度组件 具有 content-drawer.html AS:

    <ion-content>
        <ng-content></ng-content>
    </ion-content>
    

    上面的代码从我家投射到 ng-content . 似乎我必须 内容抽屉 由于运行时数据未更新,是否手动更新自身?必须更新DOM树吗?

    内容抽屉基于 this implementation .

    1 回复  |  直到 6 年前
        1
  •  2
  •   Chatar Singh    6 年前

    import { ChangeDetectorRef } from "@angular/core";
    

    constructor(private changeDetectorRef:ChangeDetectorRef) { }
    

    marker.addEventListener(GoogleMapsEvent.MARKER_CLICK).subscribe((data) => {
        this._myProvider.getData(marker.getTitle()).subscribe((data) =>{
              this.drawerHTML = this._prepare(data);
              this.changeDetectorRef.detectChanges();
        });
    });
    

    Triggering change detection manually in Angular