Я изучаю Angular на Pluralsight, и у меня есть вопрос относительно курса, который я сейчас прохожу.
Я запутался в рассуждениях о ссылочных переменных шаблона, когда им присваивается значение. Например, если вы поместите #name
в тег <input>
, я понимаю, что имя теперь может ссылаться на тег ввода и его связанное значение. У меня есть вопрос относительно декалирований, таких как #name="ngModel"
Просматривая документацию Angular, я нашел это:
Вам нужна переменная ссылки на шаблон для доступа к полям ввода Angular контроль из шаблона. Здесь вы создали переменную с именем name и дали ей значение «ngModel».
Я также нашел этот полезный ответ, который поможет мне на правильном пути.
Но мне все еще немного неясно, какое значение присваивает переменная ссылки на шаблон ngModel
.
Часть формы, которую я сейчас пишу:
<form #form="ngForm" (ngSubmit)="onSubmit(form)">
<div class="form-group">
<label for="name">Name</label>
<input id="name" name="name" class="form-control" [(ngModel)]="userSettings.name"
required #nameField="ngModel"
(blur)="onBlur(nameField)"
[class.field-error]="form.submitted && nameField.invalid">
<div [hidden]="!form.submitted || nameField.valid"
class="alert alert-danger">
Enter a name
</div>
</div>
Часть Typescript file:
@Component({
selector: 'app-user-settings-form',
templateUrl: './user-settings-form.component.html',
styleUrls: ['./user-settings-form.component.css']
})
export class UserSettingsFormComponent implements OnInit {
originalUserSettings: UserSettings = {
name: null,
emailOffers: null,
interfaceStyle: null,
subscriptionType: null,
notes: null
};
userSettings: UserSettings = { ...this.originalUserSettings };
constructor() { }
ngOnInit(): void {
}
В чем разница между использованием #nameField
против #nameField="ngModel"
и #form
против #form="ngForm"
?