Я создаю форму редактирования, которая должна заполнять поля ввода при инициализации.
Это файл компонента ts.
import { Component, OnInit, HostBinding } from '@angular/core';
import { Collection } from 'src/app/models/collection';
import { CollectionsService } from '../../services/collections.service';
import { ActivatedRoute, Router } from '@angular/router';
@Component({
selector: 'app-collection-form',
templateUrl: './collection-form.component.html',
styleUrls: ['./collection-form.component.css']
})
export class CollectionFormComponent implements OnInit {
@HostBinding('class') classes = 'row';
cta: string; // Form CTA text
collection: Collection = {
Name: '',
Description: ''
};
edit: boolean = false;
constructor(private collectionsService: CollectionsService, private router: Router, private activatedRoute: ActivatedRoute) { }
ngOnInit(): void {
this.cta = 'Add collection';
const params = this.activatedRoute.snapshot.params;
if(params.id) {
this.cta = 'Edit collection';
this.collectionsService.getCollection(params.id)
.subscribe(
res => {
this.collection = res;
this.edit = true;
},
err => console.log(err)
)
}
}
Это файл компонента html:
<div class="col-md-8 offset-md-2">
<div class="card">
<div class="card-body">
<form ngForm>
<div class="form-group">
<input type="text" name="name" [(ngModel)]="collection.Name" placeholder="Collection name" class="form-control" autofocus>
</div>
<div class="form-group">
<textarea name="description" [(ngModel)]="collection.Description" placeholder="Collection description" rows="2" class="form-control"></textarea>
</div>
<button class="btn btn-success btn-block" (click)="createNewCollection()">{{cta}}</button>
</form>
</div>
</div>
</div>
Это модель данных:
export interface Collection {
Name?: string,
Description?: string,
OwnerID?: number
};
Путь к форме редактирования: collection / edit /: id . Когда я перехожу на этот URL, я вижу в консоли браузера, что данные выбираются правильно. Однако мне не удается отобразить его в соответствующих полях ввода.
Кстати, метод POST работает отлично.
Я использую Angular 9.1.3.