Как исправить мою угловую ошибку [delete] [routerLink] - PullRequest
0 голосов
/ 25 марта 2019

Недавно я добавил простую кнопку удаления в homepage.html, используя:

<button style="border: 1.5px solid rgba(255, 0, 0, 0.226); background- 
color: whitesmoke; border-radius: 23px; font-size: 15px; padding: 5px; 
margin: 5px;"
(click)="removeCat(cat._id)">Delete</button>

Я получаю сообщение об ошибке консоли:

HomePageComponent.html: 96 Ошибка ОШИБКИ:Ошибка при попытке diff '[object Object]'.Разрешены только массивы и итерации

Мне сказали, что это в строке 96 моего html, это строка

<tr *ngFor="let cat of cats">
<td>{{cat.breedname}}</td>
<td>{{cat.age}}</td>
<td>{{cat.gender}}</td>
<td>{{cat.comfortablecatdog}}</td>
<td>{{cat.comfortablekids}}</td>
<td>{{cat.health}}</td>
<button
  style="border: 1.5px solid rgba(0, 164, 240, 0.267); background-color: whitesmoke; border-radius: 23px; font-size: 15px; padding: 5px; margin: 5px;"
      [routerLink]="['/cats', cat._id]">Details</button>
    <button
      style="border: 1.5px solid rgba(255, 217, 0, 0.267); background-color: whitesmoke; border-radius: 23px; font-size: 15px; padding: 5px; margin: 5px;"
      [routerLink]="['/cats', cat._id, 'edit']">Edit</button>
    <button style="border: 1.5px solid rgba(255, 0, 0, 0.226); background-color: whitesmoke; border-radius: 23px; font-size: 15px; padding: 5px; margin: 5px;"
    (click)="removeCat(cat._id)">Delete</button>
  </tr>

Это мой homepage.ts:

removeCat(_id) {
var tempObeservable = this._httpService.removeCatById(_id);
tempObeservable.subscribe((data: any) => {
  console.log('got a response from delete');
  var tempObeservable = this._httpService.getAllPets();
  tempObeservable.subscribe((data: any) => {
    console.log('got a response from ngoninit', data);
    this.cats = data;
  })
})

}

Это мой http.service.ts

    removeCatById(_id){
    console.log('deleteDog', _id);
    return this._http.delete(`/api/pets/${_id}/deletecat`, _id);
  }

Это мой app-routing.module.ts

    {path: 'cats/:id/deletecat', component: HomePageComponent},

Это мой routers.js

      app.delete('/api/pets/:id/deletecat', pets.deleteCat);

А это мой контроллер pets.js

      deleteCat: (req, res) => {
        Cat.deleteOne({ _id: req.params.id }, function (err) {
            if (err) {
                console.log("hit delete but got errors", err);
                res.json(err);
            } else {
                res.json({ message: 'succesfully deleted' });
            }
        })
    }

Мои другие кнопки работают нормально, 'edit' и 'details', однако теиспользуют функцию [routerLink] вместо функции my (click).Ни один из ответов, которые я нашел в Интернете, похоже, не помог.Я был бы рад предоставить больше кода, если я не предоставил достаточно.

Спасибо.

[править] Я должен отметить, что кнопка все равно удалит нужный объект, но будет отображаться только послеЯ обновляю страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...