抱歉,我是TypeScrit和Angular 2的新手,对不起我的英语不好,这不是我的母语。但我需要你的帮助。
我有这个数据模型:
export class Country{
id: number;
name: string;
}
export class State{
id: number;
name: string;
country_id: number
}
export class City{
id: number;
name: string;
state_id: number
}
我有很多国家,与一些州有关,这些与一些城市有关,例如:EEUU - >佛罗里达州 - >奥兰多
用户选择第一个国家/地区,在下一步中,必须选择与该国家/地区相关的一个州,最后一步选择与此州相关的一个城市。
目标是使用此数据完成<select></select>
标记,但我无法创建返回数据的方法。
我尝试了这个,但是我有这个错误“类型'承诺'不能在”getCitiesRefState“方法中指定类型'Promise',它类似于”getCity()“,但这很好。
我的代码是:
import { Country } from './country';
import { State } from './state';
import { City } from './city';
export const PAIS: Pais[] = [
{id: 1, name: 'EEUU'}
];
export const PROVINCIA: Provincia[] = [
{id: 1, name: 'Florida', pais_id: 1},
{id: 2, name: 'Georgia', pais_id: 1},
{id: 3, name: 'Alabama', pais_id: 1}
];
export const LOCALIDAD: Localidad[] = [
{id: 1, name: 'Orlando', provincia_id: 1},
{id: 2, name: 'Tampa', provincia_id: 1},
{id: 3, name: 'Gainesvielle', provincia_id: 1}
];
import { Injectable } from '@angular/core';
import { City } from './city';
import { CITY } from './mock-data';
@Injectable()
export class CityService{
getCities(): Promise<City[]> {
return Promise.resolve(CITY);
}
getCitiesRefState(id: number): Promise<City[]> {
return this.getCities().then(cities=> cities.find(city => city.state_id === id));
}
getCity(id: number): Promise<City> {
return this.getCities()
.then(cities => cities.find(city=> city.id === id));
}
}
答案 0 :(得分:1)
宣布您的getCitiesRefState
方法返回Promise<City[]>
但实际上返回Promise<City>
。它有助于了解我们是否扩展了该方法。
getCitiesRefState(id: number): Promise<City[]> {
return this.getCities()
.then(cities=> {
// cities.find() will return a City, not a City[]
return cities.find(city => city.state_id === id)
});
}
至于你的<select>
,你需要提供更多代码来展示那里发生的事情。