小编Nic*_*las的帖子

TypeScript - 根据属性值将对象从数组中取出

我的数组看起来像这样:

array = [object {id: 1, value: "itemname"}, object {id: 2, value: "itemname"}, ...]
Run Code Online (Sandbox Code Playgroud)

我的所有对象都具有相同的属性,但具有不同的值.

有没有一种简单的方法可以为该数组使用WHERE语句?

获取object.id = var的对象

或者我只需要遍历整个阵列并检查每个项目?我的阵列有超过100个条目,所以我想知道是否有更有效的方法

javascript arrays typescript

36
推荐指数
3
解决办法
5万
查看次数

Angular 2 - Bindings不能包含赋值

<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)

我不确定我所做的是不好的做法,或者我是否只是在制作语法错误.

这是我知道实现我想要的唯一方式,但它不起作用

javascript typescript angular

19
推荐指数
1
解决办法
2万
查看次数

Angular 4:`ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后发生了变化

我的子模块中的每个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)在一个简单的解释中,是什么导致了这个错误? …

eventemitter typescript angular

15
推荐指数
1
解决办法
2万
查看次数

Angular 2 - Debouncing keyUp事件

如何去除在"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活动上.

lodash debounce angular

14
推荐指数
2
解决办法
1万
查看次数

Moment.JS - 从周数获取日期

我没有在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,我想可能有一个简单的方法来做到这一点

javascript momentjs typescript angular

9
推荐指数
3
解决办法
7123
查看次数

Angular 4中的长轮询

我需要做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)

谢谢

long-polling typescript angular

7
推荐指数
1
解决办法
7222
查看次数

Moment.js - 获取日期范围之间的所有星期一

我的日期范围看起来像这样

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)

我想创建一个函数,允许我将日期范围内的所有星期一放在数组中.

我在堆栈上四处看看,但我只能找到一个月需要所有星期一的人的帮助.

javascript momentjs typescript angular

6
推荐指数
1
解决办法
4215
查看次数

Angular 4-具有动态参数值的自定义验证器

我编写了一个自定义验证器,用于检查日期是否在某个最小日期之上。

代码如下:

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

javascript validation typescript angular

6
推荐指数
3
解决办法
5171
查看次数

Angular 2 - 将参数传递给自定义管道

我创建了一个可以接收 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呢?我尝试了一些谷歌搜索,但我真的找不到任何我想要实现它的方式的例子(也许我做错了?)

感谢您的帮助!

pipe typescript angular

5
推荐指数
1
解决办法
8072
查看次数

以反应形式使用 [(ngModel)] 是不好的做法吗?

我开始在我的角度应用程序中使用基于模型的表单。到目前为止,我一直在起诉基于模板的表单,并使用[(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)

forms angular

5
推荐指数
1
解决办法
7163
查看次数