Angular2 自动建议给出未定义的值
Angular2 auto suggestion giving undefined value
尝试使用 angular
实现自动建议
$ npm install ng2-auto-complete --save
将地图和包添加到 systemjs.config.js
map['ng2-auto-complete'] = 'node_modules/ng2-auto-complete/dist';
packages['ng2-auto-complete'] = { main: 'ng2-auto-complete.umd.js', ...]
添加了组件
@Component({
selector: 'person',
templateUrl: 'app/person/person.component.html'
})
export class PersonComponent implements OnInit {
myForm: FormGroup;
staffInfo : PersonalMastModel[];
public arrayOfKeyValues2: any[] = [
{key:1, name:'Key One'},
{key:2, name:'Key Two'},
{key:3, name:'Key Three'},
{key:4, name:'Key Four'}
];
personalData(personName: String): Observable<DepartmentModel[]>{
let headers = new Headers();
if(personName!= undefined){
headers.append('Content-Type','application/json');
headers.append('Access-Control-Allow-Origin', '*');
return this.http.post(AppUtils.GET__MASTER_URL //return a list of department
,{personName:personName}
,{headers:headers})
.map(response => response.json())
.catch(this.handleError);
}
}
...............
在person.component.html中添加了标签
<input auto-complete [source]="arrayOfKeyValues2"
[(ngModel)]="model3"
placeholder="enter text"
value-property-name="key"
display-property-name="name"/>selected: {{model3 | json}}<br/><br/>
这里在下拉列表中显示为 (undefined) undefined。
还有我该如何更改它,以便每次都从服务器端获取数据。
当使用对象而不是字符串时,您需要使用 list-formatter
属性来调用值格式化程序。
[list-formatter]="listFormatter"
value-property-name="key"
display-property-name="name">
并将 listFormatter
定义为
listFormatter = (data: any) => `<span>(${data.key}) ${data.name}</span>`;
这是一个使用您的代码的工作 Plunker 示例。
- 还有我该如何更改,以便每次都从服务器端获取数据?
您可以使用 valueChanged
属性将其绑定到从服务器获取数据的函数,尽管这是一个完全独立的问题。
尝试使用 angular
实现自动建议 $ npm install ng2-auto-complete --save
将地图和包添加到 systemjs.config.js
map['ng2-auto-complete'] = 'node_modules/ng2-auto-complete/dist';
packages['ng2-auto-complete'] = { main: 'ng2-auto-complete.umd.js', ...]
添加了组件
@Component({
selector: 'person',
templateUrl: 'app/person/person.component.html'
})
export class PersonComponent implements OnInit {
myForm: FormGroup;
staffInfo : PersonalMastModel[];
public arrayOfKeyValues2: any[] = [
{key:1, name:'Key One'},
{key:2, name:'Key Two'},
{key:3, name:'Key Three'},
{key:4, name:'Key Four'}
];
personalData(personName: String): Observable<DepartmentModel[]>{
let headers = new Headers();
if(personName!= undefined){
headers.append('Content-Type','application/json');
headers.append('Access-Control-Allow-Origin', '*');
return this.http.post(AppUtils.GET__MASTER_URL //return a list of department
,{personName:personName}
,{headers:headers})
.map(response => response.json())
.catch(this.handleError);
}
}
...............
在person.component.html中添加了标签
<input auto-complete [source]="arrayOfKeyValues2"
[(ngModel)]="model3"
placeholder="enter text"
value-property-name="key"
display-property-name="name"/>selected: {{model3 | json}}<br/><br/>
这里在下拉列表中显示为 (undefined) undefined。
还有我该如何更改它,以便每次都从服务器端获取数据。
当使用对象而不是字符串时,您需要使用 list-formatter
属性来调用值格式化程序。
[list-formatter]="listFormatter"
value-property-name="key"
display-property-name="name">
并将 listFormatter
定义为
listFormatter = (data: any) => `<span>(${data.key}) ${data.name}</span>`;
这是一个使用您的代码的工作 Plunker 示例。
- 还有我该如何更改,以便每次都从服务器端获取数据?
您可以使用 valueChanged
属性将其绑定到从服务器获取数据的函数,尽管这是一个完全独立的问题。