7

Angular 2 で同じコンポーネントを再度リロードするにはどうすればよいですか?

以下は私のコードです:

import { Component, OnInit, ElementRef, Renderer } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { productModel } from '../_models/index';
import { categoryListService } from '../_services/index';

@Component({
  selector: 'app-product',
  templateUrl: 'product.component.html',
  styleUrls: ['product.component.css']
})
export class productComponent implements OnInit {
  uidproduct: productModel;
  param: number;
  constructor(
    private elementRef: ElementRef,
    private route: ActivatedRoute,
    private router: Router,
    private categoryListService: categoryListService) { }

  ngOnInit() {
    this.route.params.subscribe(product => {
      console.log('logging sub product obj', product);
    });
    this.uidproduct = JSON.parse(sessionStorage.getItem('product'));
    var s = document.createElement("script");
    s.type = "text/javascript";
    s.src = "http://this/external/script/needs/to/be/loaded/each/time.js";
    this.elementRef.nativeElement.appendChild(s);
  }
  nextproduct(){ 
    let i = this.uidproduct.order;
    this.categoryListService.findNextproduct(this.uidproduct);
    this.param = ++i;
    this.router.navigate([`/product/${this.param}`]);
  }
}

nextproduct()テンプレートのクリック イベントにバインドされています。

これuidproductは、多数のプロパティを持つ JSON オブジェクトであり、DOM を次のように更新しています。{{uidproduct.classname}}

これをテンプレートで次のように使用しています。

<div id="selected-product" class="{{uidproduct.classname}}">

をクリックする<button (click)="nextproduct()">と、DOM のクラス プロパティが変更されますが、外部スクリプトを有効にするにはコンポーネントをリロードする必要があります。

4

2 に答える 2