如何在angular2服务调用期间进行过滤
How to filter during angular2 service call
我正在尝试在 Angular 2 上开发模型。在这种情况下,我有一个名为 Layer
的模型,其中有多个 JSON 条目:
Layer.ts
export class Layer {
model: number;
layer: string;
loaded: number;
}
我还有一个用于模型的模拟层注入器:
模拟-layer.ts
import { Layer } from './layer';
export const LAYERS: Layer[] = [
{model: 9.1, layer: 'SIF', loaded: 1},
{model: 9.1, layer: 'AW', loaded: 1},
{model: 9.1, layer: 'DW', loaded: 1},
{model: 8.7, layer: 'SIF', loaded: 1},
{model: 8.7, layer: 'AW', loaded: 1},
{model: 8.7, layer: 'DW', loaded: 1}
];
在现实世界中,我只会 return 1 个型号“9.1”或“8.7”。但是,我正处于模型阶段,我现在正在提取我的两个示例。
为了服务这些数据,我有一个图层服务:
layer.service.ts
import { Injectable } from '@angular/core';
import { LAYERS } from './mock-layers';
@Injectable()
export class LayerService {
getLayers() {
return Promise.resolve(LAYERS);
}
}
函数getLayers()
return所有图层记录。
对于我正在制作的示例,我如何 return 仅适合特定变量的层(例如 Model = '9.1'
)?
您可以在创建 Promise
之前使用 Array#filter()
:
getLayers() {
return Promise.resolve(LAYERS.filter(layer => layer.model === 9.1));
}
更新:根据评论,为什么 ===
而不是 =
?
=
是归因,所以:
LAYERS.filter(layer => layer.model = 9.1)
在这种情况下完全错误。它没有过滤任何东西,它(在 plunker 中尝试)基本上覆盖每个 layer.model
到 9.1
。
另一方面,===
是 严格相等 运算符:
LAYERS.filter(layer => layer.model === 9.1)
上面的代码将生成一个数组,其中的内容是每个 LAYERS
具有 model
属性 严格等于 的元素9.1
.
要了解 "strictly" 部分的更多信息,请查看 this link。
我正在尝试在 Angular 2 上开发模型。在这种情况下,我有一个名为 Layer
的模型,其中有多个 JSON 条目:
Layer.ts
export class Layer {
model: number;
layer: string;
loaded: number;
}
我还有一个用于模型的模拟层注入器:
模拟-layer.ts
import { Layer } from './layer';
export const LAYERS: Layer[] = [
{model: 9.1, layer: 'SIF', loaded: 1},
{model: 9.1, layer: 'AW', loaded: 1},
{model: 9.1, layer: 'DW', loaded: 1},
{model: 8.7, layer: 'SIF', loaded: 1},
{model: 8.7, layer: 'AW', loaded: 1},
{model: 8.7, layer: 'DW', loaded: 1}
];
在现实世界中,我只会 return 1 个型号“9.1”或“8.7”。但是,我正处于模型阶段,我现在正在提取我的两个示例。
为了服务这些数据,我有一个图层服务:
layer.service.ts
import { Injectable } from '@angular/core';
import { LAYERS } from './mock-layers';
@Injectable()
export class LayerService {
getLayers() {
return Promise.resolve(LAYERS);
}
}
函数getLayers()
return所有图层记录。
对于我正在制作的示例,我如何 return 仅适合特定变量的层(例如 Model = '9.1'
)?
您可以在创建 Promise
之前使用 Array#filter()
:
getLayers() {
return Promise.resolve(LAYERS.filter(layer => layer.model === 9.1));
}
更新:根据评论,为什么 ===
而不是 =
?
=
是归因,所以:
LAYERS.filter(layer => layer.model = 9.1)
在这种情况下完全错误。它没有过滤任何东西,它(在 plunker 中尝试)基本上覆盖每个 layer.model
到 9.1
。
===
是 严格相等 运算符:
LAYERS.filter(layer => layer.model === 9.1)
上面的代码将生成一个数组,其中的内容是每个 LAYERS
具有 model
属性 严格等于 的元素9.1
.
要了解 "strictly" 部分的更多信息,请查看 this link。