我的数组看起来像这样:
array = [object {id: 1, value: "itemname"}, object {id: 2, value: "itemname"}, ...]
Run Code Online (Sandbox Code Playgroud)
我的所有对象都具有相同的属性,但具有不同的值.
有没有一种简单的方法可以为该数组使用WHERE语句?
获取object.id = var的对象
或者我只需要遍历整个阵列并检查每个项目?我的阵列有超过100个条目,所以我想知道是否有更有效的方法
<tr>如果item的属性与数组中对象的属性具有相同的值,我需要给一个类.
这是我目前的代码:
<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0">
Run Code Online (Sandbox Code Playgroud)
但是现在我收到错误:
Bindings cannot contain assignments
Run Code Online (Sandbox Code Playgroud)
我不确定我所做的是不好的做法,或者我是否只是在制作语法错误.
这是我知道实现我想要的唯一方式,但它不起作用
我的子模块中的每个EventEmiiter都会出现此错误,但我无法找到解决方法.
ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.
这是触发我的EventEmitter的原因:
ngOnChanges(changes: any) {
if (changes.groupingTabValid) {
if (changes.groupingTabValid.currentValue !== changes.groupingTabValid.previousValue) {
this.groupingTabValidChange.emit(this.groupingTabValid);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的"主要"组件的HTML
<year-overview-grouping [definitionDetails]="definitionDetails"
[fixedData]="fixedData"
[showValidation]="showValidation"
[groupingTabValid]="groupingTabValid"
(groupingTabValidChange)="setValidators('groupingTab', $event)">
</year-overview-grouping>
Run Code Online (Sandbox Code Playgroud)
哪个叫这个功能
public setValidators(validator: string, e: boolean) {
switch (validator) {
case "groupingTab":
this.groupingTabValid = e;
break;
case "selectionTab":
this.selectionTabValid = e;
break;
}
if (this.groupingTabValid && this.selectionTabValid) {
this.valid = true;
} else {
this.valid = false;
}
}
Run Code Online (Sandbox Code Playgroud)
1)在一个简单的解释中,是什么导致了这个错误? …
如何去除在"keyUp"事件中调用的函数?
这是我的代码:
我的功能
private handleSearch(searchTextValue: string, skip?: number): void {
this.searchTextValue = searchTextValue;
if (this.skip === 0 || typeof skip === "undefined") {
this.skip = 0;
this.pageIndex = 1;
} else {
this.skip = skip;
}
this.searchTextChanged.emit({ searchTextValue: searchTextValue, skip: this.skip, take: this.itemsPerPage });
}
Run Code Online (Sandbox Code Playgroud)
我的HTML
<input type="text" class="form-control" placeholder="{{ 'searchquery' | translate }}" id="searchText" #searchText (keyup)="handleSearch(searchText.value)">
Run Code Online (Sandbox Code Playgroud)
我正在努力实现的是handleSearch在用户停止输入后稍微调用一下.
我发现我可以使用lodash's _debounce(),但我还没有找到如何把它放在我的keyUp活动上.
我没有在moment.js的文档中看到这一点.也许我正在跳过它,但我想将一年中的一周数转换为日期格式.
例如
week: number = 13
year: number = 2017
date: date = // get date format for the first day of that week
Run Code Online (Sandbox Code Playgroud)
我正在使用moment.js,但我在文档中找不到我想要的内容.这可能吗?我已经找到了普通javascript的一些答案,但由于我已经在使用moment.js,我想可能有一个简单的方法来做到这一点
我需要做API调用来显示某些内容的进度.
我创建了一个服务,每1.5秒执行一次
主要部分
private getProgress() {
this.progressService.getExportProgress(this.type, this.details.RequestID);
}
Run Code Online (Sandbox Code Playgroud)
Services.ts
public getExportProgress(type: string, requestId: string) {
Observable.interval(1500)
.switchMap(() => this.http.get(this.apiEndpoint + "Definition/" + type + "/Progress/" + requestId))
.map((data) => data.json().Data)
.subscribe(
(data) => {
if (!data.InProgress)
//Stop doing this api call
},
error => this.handleError(error));
}
Run Code Online (Sandbox Code Playgroud)
这个电话有效,但它一直在继续.我想在进度结束时停止进行API调用(if (!data.InProgress)但我仍然坚持这一点.
我怎样才能正确地取消订阅这个可观察的时间if (!data.InProgress)?
谢谢
我的日期范围看起来像这样
let start = moment(this.absence.FromDate);
let end = moment(this.absence.ToDate);
Run Code Online (Sandbox Code Playgroud)
用户可以决定在该日期范围内停用特定的工作日,因此我有布尔值
monday = true;
tuesday = false;
...
Run Code Online (Sandbox Code Playgroud)
我想创建一个函数,允许我将日期范围内的所有星期一放在数组中.
我在堆栈上四处看看,但我只能找到一个月需要所有星期一的人的帮助.
我编写了一个自定义验证器,用于检查日期是否在某个最小日期之上。
代码如下:
export function validateMinDate(min: Date): ValidatorFn {
return (c: AbstractControl) => {
if (c == null || c.value == null)
return null;
let isValid = c.value >= min;
if (isValid) {
return null;
} else {
return {
validateMinDate: {
valid: false
}
};
}
};
}
Run Code Online (Sandbox Code Playgroud)
我这样初始化表格
this.definitionForm = this.fb.group({
"from": [this.details.From, Validators.required],
"to": [this.details.To, [Validators.required, validateMinDate(this.details.From)]]
});
Run Code Online (Sandbox Code Playgroud)
我可以看到正在应用验证器,但是当我console.log()在验证器中使用最小值时,我可以看到它等于null。
this.details.From 我在初始化表单时从null开始,因此我假设参数不是动态的,并且在设置表单时仅取值?
当用户选择起始日期并由此更改的值时,如何确保最小日期正在更新this.details.From?
我创建了一个可以接收 2 个参数的管道,但我不确定如何发送它们。
这是我的管道:
export class TranslationPipe implements PipeTransform {
private capitalize: boolean;
constructor(
private translationService: TranslationService
) {
this.capitalize = true;
}
transform(key: string, capitalize?: boolean): string {
if (typeof capitalize !== "undefined" || capitalize !== null)
this.capitalize = capitalize;
return this.translationService.getTranslation(key, this.capitalize);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 HTML
{{ 'searchquery' | translate }}
Run Code Online (Sandbox Code Playgroud)
这有效,但我怎么能通过capitlize = false呢?我尝试了一些谷歌搜索,但我真的找不到任何我想要实现它的方式的例子(也许我做错了?)
感谢您的帮助!
我开始在我的角度应用程序中使用基于模型的表单。到目前为止,我一直在起诉基于模板的表单,并使用[(ngModel)].
我注意到[(ngModel)]以反应形式使用是可能的,但我一直在堆栈上读到这是一个不好的做法,但我在文档中找不到(或错过)任何有关此的内容。
当您使用反应式表单时,您是否真的应该避免使用?如果是这样,将数据绑定到输入的正确方法是什么?
现在我做这样的事情:
我的组件:
this.assignForm = this.fb.group({
"balance": [null, Validators.required]
});
Run Code Online (Sandbox Code Playgroud)
我的模板
<input type="text" formControlName="balance" [(ngModel)]="myData.Balance" />
Run Code Online (Sandbox Code Playgroud) angular ×9
typescript ×8
javascript ×5
momentjs ×2
arrays ×1
debounce ×1
eventemitter ×1
forms ×1
lodash ×1
long-polling ×1
pipe ×1
validation ×1