首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在angular 6中修改数组数据后视图未更新

在angular 6中修改数组数据后视图未更新
EN

Stack Overflow用户
提问于 2018-09-17 00:19:10
回答 2查看 907关注 0票数 0

我正在从数组中删除数据并尝试更新视图,但它不起作用。

代码语言:javascript
复制
  async deleteProduct(e) {
    try {
      const data = await this.rest.get(environment.apiUrl + `/api/seller/products/delete/?id=${e.target.id}`);
      data['success'] ? this.products = (this.products.filter(e => e != (data['products'].id))) : this.data.error(data['message']);
    } catch (error) {
      this.data.error(error['message']);
    }
  }

Html:

代码语言:javascript
复制
<section id="myProducts">
  <div class="container p-5">
    <app-message></app-message>
    <div *ngIf="!products" class="m-auto">
      <h1 class="text-center display-3 mt-5">
        <i class="fa fa-spinner fa-spin"></i>
      </h1>
    </div>
    <h3 *ngIf="products && !products.length" class="display-2 text-center mt-5">My Products is Empty</h3>
    <div *ngIf="products && products.length" class="row">
      <div class="col">
        <h4 class="display-4">My Products</h4>
        <div class="row">
          <div class="offset-10 col-2 d-none d-md-block">
            <p>
              <small class="text-muted">Price</small>
            </p>
          </div>
        </div>
        <hr class="mt-0">
        <div *ngFor="let product of products" class="product">
          <div class="row">
            <div class="col-4 col-md-2">
              <a routerLink="/product/{{ product.id }}">
                <img src="{{ product.image }}" alt="image" class="img-fluid img-thumbnail">
              </a>
            </div>
            <div class="col-5 col-md-8">
              <h5>
                <a routerLink="/product/{{ product.id }}">{{ product.title }}</a>
                <p class="m-0">
                  <small class="text-muted">{{ product.category.name }}</small>
                </p>
              </h5>
            </div>
            <div class="col-2">
              <h6 class="font-weight-bold text-danger" >{{ product.price | currency : 'INR' }}</h6>
            </div>
            <div class="col-2">
              <button type="button" class="btn btn-info" id="{{product.id}}" (click)="editProduct($event)" [disabled]="btnDisabled">Edit</button>
            </div>
            <div class="col-2">
              <button type="button" class="btn btn-info" id="{{product.id}}" (click)="deleteProduct($event)" [disabled]="btnDisabled">Delete</button>
            </div>
          </div>
          <hr>
        </div>
      </div>
    </div>
  </div>
</section>

从数组中删除项后,我尝试像这样更新对象:

代码语言:javascript
复制
this.products = (this.products.filter(e => e != (data['products'].id)))
EN

回答 2

Stack Overflow用户

发布于 2018-09-17 00:36:41

看起来是这样的,您的视图没有检查products数组的更改。

所以我会说手动触发它:

注入ChangeDetectorRef以手动触发更改检测。

代码语言:javascript
复制
constructor(private cd: ChangeDetectorRef){....}

在你的方法中调用this.cd.detectChanges()

代码语言:javascript
复制
async deleteProduct(e) {
    ...
    data['success'] ? this.products = (this.products.filter(e => e != (data['products'].id))) : this.data.error(data['message']);
    this.cd.detectChanges();
    ...
}
票数 0
EN

Stack Overflow用户

发布于 2018-09-17 02:43:38

您正在将e与!= e‘’products‘.id..这不是真的。我认为你应该检查"e“中保存id的变量。

这意味着

e.id != ...or类似这样的东西。

我希望它能起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52356067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档