我复制粘贴其中一个例子:
https://material.angular.io/components/autocomplete/overview
HTML:
<form class="example-form">
<mat-form-field class="example-full-width">
<input type="text" placeholder="Pick one" aria-label="Number" matInput [formControl]="myControl" [matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete">
<mat-option *ngFor="let option of filteredOptions | async" [value]="option">
{{ option }}
</mat-option>
</mat-autocomplete>
</mat-form-field>
</form>
TS:
import {Component} from '@angular/core';
import {FormControl} from '@angular/forms';
import {Observable} from 'rxjs/Observable';
import {startWith} from 'rxjs/operators/startWith';
import {map} from 'rxjs/operators/map';
/**
* @title Filter autocomplete
*/
@Component({
selector: 'autocomplete-filter-example',
templateUrl: 'autocomplete-filter-example.html',
styleUrls: ['autocomplete-filter-example.css']
})
export class AutocompleteFilterExample {
myControl: FormControl = new FormControl();
options = [
'One',
'Two',
'Three'
];
filteredOptions: Observable<string[]>;
ngOnInit() {
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith(''),
map(val => this.filter(val))
);
}
filter(val: string): string[] {
return this.options.filter(option =>
option.toLowerCase().indexOf(val.toLowerCase()) === 0);
}
}
CSS:
.example-form {
min-width: 150px;
max-width: 500px;
width: 100%;
}
.example-full-width {
width: 100%;
}
但是我收到了这个错误:
编译失败:Property&#39; pipe&#39;在类型&#39; Observable&#39;。
上不存在
知道为什么吗?
答案 0 :(得分:1)
确保使用的是最新版本的rxjs@5.x.x和angular。
https://github.com/ReactiveX/rxjs/blob/master/doc/lettable-operators.md
答案 1 :(得分:0)
我在您的代码中发现问题,即
myControl: FormControl = new FormControl();
从此行中删除“ FormControl”。实际上,您正在定义其“类型”,但是对于“ new FormControl()”而言,它不存在,我想知道为什么“ tslint”在您的代码中没有给出错误。无论如何,再次看到https://material.angular.io/components/autocomplete/overview,这里的角度也不像您粘贴在这里的代码那样。
答案 2 :(得分:0)
请检查RxJS版本兼容性。
正如我确实通过您的代码,发现正确和工作。请看
version of RxJS should be > 5.5
答案 3 :(得分:-2)
根据您上面的评论,您似乎只是想要订阅FormControl上发生的值更改。试试这个:
private void BtnConect_OnClicked(object sender, EventArgs e)
{
activityIndicatorLogin.IsRunning = true;
Task.Delay(1000).ContinueWith(t => TEST());
}
protected void TEST()
{
activityIndicatorLogin.IsRunning = false;
DisplayAlert("tiitle test", "messsage test", "close");
}
不完全确定你的意图是什么,但至少应该开始向你吐出更改值。