我在开发一个angular应用程序时遇到了一个奇怪的问题。我在一段时间前写了这段代码,它工作得很好:
selectedGeoArea: any
receiveStoreEvent(event) {
switch (event.constructor) {
case City:
console.log("city")
break
case Province:
console.log("province")
break
case String:
console.log("region")
break
}
this.selectedGeoArea = event
}现在,selectedGeoArea将作为输入传递给另一个组件
<text-search [selectedGeoArea]="selectedGeoArea"></text-search>
export class TextSearchComponent {
@Input() selectedGeoArea: any
buildQuery(): string {
switch (this.selectedGeoArea) {
case City:
return `${this.addressQuery}, ${this.selectedGeoArea.name}, ${this.selectedGeoArea.province.code}, ${this.selectedGeoArea.province.region}`
case Province:
return `${this.addressQuery}, ${this.selectedGeoArea.code}, ${this.selectedGeoArea.region}`
case String:
return `${this.addressQuery}, ${this.selectedGeoArea}`
}
return this.addressQuery
}问题是buildQuery()总是返回addressQuery的值,这意味着开关根本不工作。与receiveStoreEvent()中设置的一样,selectedGeoArea具有正确的值和类型。
这里我漏掉了什么?
发布于 2020-03-26 19:04:00
您需要执行以下操作
this.selectedGeoArea = event.constructor或以下内容
switch (this.selectedGeoArea.constructor) {
.
.
.
}在最初的函数中,您匹配的是event.constructor,但在新函数中,您只匹配event。
https://stackoverflow.com/questions/60865631
复制相似问题