【发布时间】:2020-04-01 17:17:55
【问题描述】:
我想在我的项目中使用 google-place-api autoComplete,但它给了我一个错误:
TypeError: Cannot read property 'getInputElement' of undefined
.html
<section
[formGroupName]="i"
*ngFor="let tech of form.controls.stations.controls; let i = index">
<ion-item-group>
<ion-item-divider color="light">Station #{{ i + 1 }}</ion-item-divider>
<ion-item>
<ion-label position="floating">Technology name:</ion-label>
<ion-input
#autoStation
type="text"
maxlength="50"
formControlName="name"></ion-input>
</ion-item>
<!-- Allow generated input field to be removed -->
<ion-button
(click)="removeInputField(i)"
*ngIf="form.controls.technologies.length > 1"
class="ion-no-padding ion-float-right" shape="round" fill="clear">
<ion-icon slot="start" name="close"></ion-icon>Remove</ion-button>
</ion-item-group>
</section>
<div>
<!-- Allow new input field to be generated/added -->
<ion-button
(click)="addNewInputField()"
class="ion-no-padding ion-float-left" shape="round" fill="clear">
<ion-icon slot="start" name="add"></ion-icon> Add a new technology</ion-button>
</div>
.ts
@ViewChild('autoStation', {static: true}) autoStation: any;
ngAfterViewInit(): void {
this.autoStation.getInputElement().then((input:HTMLInputElement)=>{
var autocompl = new google.maps.places.Autocomplete(input, {
//somee code
});
}
});
addNewInputField() : void {
const control = this.form.controls.technologies as FormArray;
control.push(this.initTechnologyFields());
}
removeInputField(i : number) : void {
const control = this.form.controls.technologies as FormArray;
control.removeAt(i);
}
PS: 当我删除 fro 循环时它可以工作,但是当我再次添加它时,它会给出上面的错误。 请问有什么建议吗?
我添加了一些图片来对问题有一个粗略的想法,第一张图片你看到我制作的第二张 UI 当尝试输入城市时 google places api 正在工作但当我单击按钮添加新city 生成了文本字段,但 google places api 不起作用,这就是问题所在。
【问题讨论】:
-
我认为这是您创建的另一个问题的重复?请关闭一个。
标签: javascript angular google-places-api ionic4 angular-reactive-forms