html - 无法分配给“fromDate”,因为它是只读属性。ts
问题描述
我正在使用角度 12。我有 2 个DatePicker,它们在表单内。每个 DatePicker 都有小 X 按钮。我希望当我按下它时,它会清除 DatePicker 中的输入。但是当我尝试以这种方式清除它时:this.fromDate=null出现此错误:无法分配给'fromDate',因为它是只读属性。ts . 我尝试了函数 this.fromDate.setValue() 但它说该函数不存在。我发现的任何其他提及此错误的内容都暗示了我之前提到的内容或我无法做的事情,因为这是形式上的。
还尝试了 this.filterForm.reset()但它重置了两个 Datepicker,因为它们在组中。
这是我的代码:
这是我的 html 代码
<div class="title-group" >
<h1 class="mat-h1" >Popis vožnji</h1>
</div>
<div >
<mat-divider fxFlex="1 0"></mat-divider>
</div >
<div>
<mat-form-field appearance="standard">
<mat-label>Filter</mat-label>
<input matInput (keyup)="applyFilter($event)" placeholder="Ex. Lift0" #input>
</mat-form-field>
</div>
<div >
<form [formGroup]="filterForm">
<mat-form-field class="example-form-field1">
<input matInput
[matDatepicker]="fromDate"
placeholder="From Date"
formControlName="fromDate">
<button *ngIf="fromDate" matSuffix mat-icon-button aria-label="Clear" (click)="clearFromDate()">
<mat-icon matDatepickerToggleIcon >close</mat-icon>
</button>
<mat-datepicker-toggle matSuffix [for]="fromDate"></mat-datepicker-toggle>
<mat-datepicker #fromDate></mat-datepicker>
</mat-form-field>
<mat-form-field class="example-form-field1">
<input matInput
[matDatepicker]="toDate"
placeholder="To Date"
formControlName="toDate">
<button *ngIf="toDate" matSuffix mat-icon-button aria-label="Clear" (click)="clearToDate($event)">
<mat-icon matDatepickerToggleIcon >close</mat-icon>
</button>
<mat-datepicker-toggle matSuffix [for]="toDate"></mat-datepicker-toggle>
<mat-datepicker #toDate></mat-datepicker>
</mat-form-field>
<button mat-button color="primary" (click)="applyFilterDate()">Pretraži</button>
</form>
</div>
</div>
这是我的 ts 代码
export class IspisPutovanjaComponent implements OnInit {
id :string|null;
LiftData: any = [];
dataSource!: MatTableDataSource<Putovanje>;
@ViewChild(MatPaginator)
paginator!: MatPaginator;
@ViewChild(MatSort)
sort!: MatSort;
displayedColumns: any[] = [
'n_k',
'v_k',
'p_k',
'z_k',
'start_time',
'end_time',
'count_p'
];
//
pipe: DatePipe;
filterForm = new FormGroup({
fromDate: new FormControl(),
toDate: new FormControl(),
});
get fromDate() { return this.filterForm.get('fromDate')!.value; }
get toDate() { return this.filterForm.get('toDate')!.value; }
constructor(private travel_service: PutovanjeService,private actRoute: ActivatedRoute) {
this.id = this.actRoute.snapshot.paramMap.get('id');
this.dataSource= new MatTableDataSource();
this.pipe = new DatePipe('en');
}
ngOnInit(): void {
this.LiftData = [];
this.retrieveLifts();
}
applyFilter(event: Event) {
const filterValue = (event.target as HTMLInputElement).value;
this.dataSource.filter = filterValue.trim().toLowerCase();
if (this.dataSource.paginator) {
this.dataSource.paginator.firstPage();
}
}
//
applyFilterDate() {
this.dataSource.data=this.LiftData.filter( (data: { start_time: string | number | Date; end_time: string | number | Date; })=>{
if (this.fromDate && this.toDate) {
return this.pipe.transform(data.start_time,'shortDate')! >= this.pipe.transform(this.fromDate,'shortDate')! && this.pipe.transform(data.end_time,'shortDate')! <= this.pipe.transform(this.toDate,'shortDate')!;
}
return true;
}
);
}
clearFromDate()
{
this.fromDate=null;
}
clearToDate(event: { stopPropagation: () => void; }){
event.stopPropagation();
this.dataSource.data=this.LiftData;
}
}
解决方案
你有一个模板引用变量:“#fromDate”在你的
<mat-datepicker #fromDate ..>
与你同名
get fromDate(){..}
只需将第一个从一些更改为 <mat-datepicker #fromDateID ..>
看到,在这种情况下,工具按钮变成了<mat-datepicker-toggle [for]="fromDateID">...
推荐阅读
- python - Python - ValueError:找到暗淡3的数组。估计器预期<= 2
- angular - 错误 NG6002:出现在 AppModule 的 NgModule.imports 中,但无法解析为 NgModule 类。是否缺少@NgModule 注释?
- html - 垂直对齐不适用于 React.js 中的 React 图标
- api - 如何从 Power BI 中的 API 获取所有数据
- reactjs - 如何创建一个设置异步侦听器的反应挂钩?
- python - 索引更改不适用于新的 DataFrame
- javascript - vite 中的 Node.js 核心模块作为 webpack 后备
- android - 评估项目“:@mauron85_react-native-background-geolocation-common”时出现问题
- amazon-web-services - 如附图所示,如何在我的账户中获取 S3 存储桶信息?
- python - 试图重新组织 csv lat lon