Я работаю с Angular 6, и у меня странное поведение подписки, поэтому, когда я трижды вызываю метод reload из конструктора, он работает нормально, и я получаю три сообщения журнала «подписаться».
Но когда я нажимаю кнопку, которая имеет (click) = "reload ()", перезагрузка выполняется, но подписка никогда не выполняется.
компания-edit.component.ts
export class CompanyEditComponent implements OnInit {
company$ : Observable<any>;
company: Company;
formCompany: Company;
refDb: any;
constructor(private db: AngularFireDatabase, private companyService: CompanyService) {
this.refDb = db.object('company');
this.company$ = this.companyService.getCompanyObservable();
this.reload();
this.reload();
this.reload();
}
reload(){
console.log("reload");
this.refDb = this.db.object('company');
this.company$ = this.companyService.getCompanyObservable();
this.formCompany = new Company("","");
this.company$.subscribe( (company)=>{ console.log("subscribe");
this.company = company;
console.log(this.company);
if (company)
this.formCompany = company;
});
// this.formCompany = {"name":"kk","fondator":"gg"};
}
компания-edit.component.html
<div>
<mat-form-field>
<input matInput [(ngModel)]="formCompany.name" placeholder="Name">
</mat-form-field>
<br>
<mat-form-field>
<input matInput [(ngModel)]="formCompany.fondator" placeholder="Fondateur">
</mat-form-field>
<br>
<button mat-raised-button color="primary"(click)="submit()">Save</button> |
<button mat-raised-button color="accent"(click)="update()">Update</button> |
<button mat-raised-button color="warn"(click)="delete()">Delete</button> |
<button mat-raised-button color="" (click)="reload()">Reload</button>
</div>
company.service.ts
export class CompanyService {
company$ : Observable<any>;
refDb: any;
constructor(private db: AngularFireDatabase) {
this.refDb = db.object('company');
this.company$ = this.refDb.valueChanges();
}
getCompanyObservable(){
return this.company$;
}