我一直在努力想弄清楚為什么這個決議錯誤不斷發生。
[zip.errors?.['required']] 中第 13 列的意外令牌 [,預期識別符號或關鍵字
我懷疑“?” 是對尋找該鍵的錯誤陣列的查詢。我的搜索沒有發現任何關于這個“?”的資訊。句法。我見過的打字稿資源似乎假設我知道它是如何定義的。我很高興看到指標。
值得慶幸的是,在https://angular.io/guide/form-validation#validating-input-in-reactive-forms上找到的代碼示例可以正常作業,因此我的 Angular 庫似乎沒有問題。這是我遵循作業示例代碼的模式后最簡單的類和模板。
捐贈.component.ts
import { Component, NgZone, ViewChild, OnInit } from '@angular/core';
import { BackendService } from '../service/backend.service';
import { FormControl, FormGroup, Validators } from '@angular/forms';
@Component({
moduleId: module.id,
selector: 'app-donate',
templateUrl: './donate.component.html',
styleUrls: ['./donate.component.scss']
})
export class DonateComponent implements OnInit {
donateForm: FormGroup;
ngOnInit(): void {
this.donateForm = new FormGroup({
name: new FormControl('', [Validators.required]),
zip: new FormControl('', [Validators.required])
});
}
get name() { return this.donateForm.get('name')!; }
get zip() { return this.donateForm.get('zip')!; }
}
捐贈.component.html
<form [formGroup]="donateForm"#formDir="ngForm">
<div [hidden]="formDir.submitted">
<div >
<label for="zip">Zip code</label>
<input formControlName="zip" name="zip" type="text" id="zip" required>
<div *ngIf="zip.invalid && (zip.dirty || zip.touched)"
>
<div *ngIf="zip.errors?.['required']">Billing zip code is required.</div>
</div>
</div>
</div>
<!-- submit button removed for demo -->
</form>
第一個 ngIf 測驗 zip.invalid 是否有效,因此 zip 屬性似乎不是問題。使用 zip.errors 本身而不查詢 errors 陣列可以編譯,但如果我們不是在尋找特定型別的錯誤,那么它就沒有幫助。它似乎對我使用問號和陣列感到猶豫。既然代碼示例使用了這種語法,為什么我的會壞掉?
uj5u.com熱心網友回復:
由于您使用的是 Angular 7,因此*ngIf您的情況應為:
<div *ngIf="zip.errors?.required">Billing zip code is required.</div>
?in在Angular 中zip.errors?.required被稱為安全導航運算子,用于防止屬性路徑中出現 null 和 undefined 值。TypeScript 3.7 中引入了類似的概念,稱為可選鏈
如果zip.errors為null,并且我們不使用安全導航運算子,那么它將在運行時嘗試讀取requirednull上的屬性時導致失敗。?保護我們免受此類運行時故障。
[zip.errors?.['required']] 中第 13 列的意外令牌 [,預期識別符號或關鍵字
?.['required']Angular 7 不支持在模板運算式中使用安全導航運算子 this ( ) 方式,因此會出現錯誤。它在較新的版本(12.1.0 及更高版本)中可用。
TypeScript 4.2 引入了一個新標志noPropertyAccessFromIndexSignature,它不允許通過“點”表示法(obj.key)使用索引簽名中的未知欄位,并強制使用“索引”語法(obj["key"]).
zip.errors?.['required'] 通過索引語法使用可選鏈接和訪問索引簽名屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409957.html
標籤:
