Я пытаюсь удалить объект из моей базы данных в .Net Core 2.1 + Angular Application. Однако каждый раз, когда я звоню, создаются две записи.
Во время отладки выясняется, что вызов сделан и происходит дважды. На вкладке «Сеть» консоли отображаются два повторяющихся вызова, и при прослушивании на сервере каждая точка останова повторяется дважды. Эти вызовы происходят в унисон, а не последовательно, так как мне приходится дважды щелкать по каждой точке останова, прежде чем перейти к следующей.
Я рассмотрел использование оператора share, но он либо не помогает, либо я не реализую его правильно?
Любая помощь приветствуется,
Module.ts
import { BusinessUnitService } from './../../services/business-
unit.service';
import { Component, OnInit } from '@angular/core';
import { MatDialogRef } from '@angular/material';
import { ToastrService } from 'ngx-toastr';
import 'rxjs/add/operator/share';
@Component({
selector: 'app-businessunit-create',
templateUrl: './businessunit-create.component.html',
styleUrls: ['./businessunit-create.component.css']
})
export class BusinessunitCreateComponent implements OnInit {
companies = [];
businessUnit: any = {};
constructor(private dialogRef: MatDialogRef<BusinessunitCreateComponent>,
private businessUnitService: BusinessUnitService,
private toastr: ToastrService) { }
ngOnInit() {
this.businessUnitService.getCompanies().subscribe(res => {
this.companies = res;
console.log(res);
});
}
createBusinessUnit() {
console.log(this.businessUnit);
this.businessUnitService.addBusinessUnit(this.businessUnit).share().subscribe(res => {
this.toastr.success('New Line of Business added successfully');
this.dialogRef.close('ok');
},
err => {
this.toastr.error('Line of Business could not be added: ' + err);
});
}
}
Service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { map } from 'rxjs/internal/operators/map';
import { share } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class BusinessUnitService {
addBusinessUnit(bu) {
return this.http.post('/BusinessUnit/NewBusinessUnit', bu).pipe(share());
}
HTML Где называется
<mat-dialog-actions>
<button class="mat-raised-button" (click)="close()">Close</button>
<button class="mat-raised-button mat-primary" (click)="createBusinessUnit()"
[disabled]="!f.valid">Save Line of Business</button>
</mat-dialog-actions>
* Отредактировано для наглядности