Angular 2でオブザーバブルからフォームを作成する正しい方法は何ですか?
現時点では、半分の作業状況があります。初めてフォームにアクセスしたときにデータが入力されましたが、フォームから戻ってページに再度アクセスすると、データがなくなりました。
成分
export class ProfileEditComponent implements OnInit {
user: FirebaseObjectObservable<UserProfile>;
form: FormGroup;
error = false;
errorMessage = '';
constructor(private authService: AuthService, private fb: FormBuilder) { }
ngOnInit() {
this.authService.getUserProfile().subscribe(data => {
this.user = <FirebaseObjectObservable<UserProfile>>data;
console.log('user', this.user)
this.user.subscribe( (resp) => {
this.form.patchValue(
{
company: resp.company
}
)
})
});
this.form = this.fb.group({
company: ['', Validators.required],
});
}
onEdit() {
this.authService.editUserProfile(this.user, this.form.value);
}
}
テンプレート
<h2>Profile edit component</h2>
<a [routerLink]="['/profile']">cancel</a>
<form [formGroup]="form" (ngSubmit)="onEdit()">
<div class="form-group">
<label for="company">Company</label>
<input
formControlName="company"
type="company"
id="company"
#company
class="form-control"
>
<span *ngIf="!company.pristine && company.errors != null && company.errors['noCompany']">No Company name</span>
</div>
<button type="submit" [disabled]="!form.valid" class="btn btn-primary">Change profile</button>
</form>