我在我的应用主页面上设计了一个元素,点击后会更改活动标签。
我曾经做过以下事情:
events.subscribe('change-tab', (tab, filterOnSport) => {
console.log('TabsPage#constructor - change-tab event received with params: ', tab, filterOnSport);
if (filterOnSport) this.findTabParams.filterOnSport = filterOnSport;
this.tabs.select(tab);
});
但是,如果从未访问过该标签,那么第一次这不起作用(参见https://github.com/ionic-team/ionic/issues/12592)
我在Github问题中看到有人建议模拟标签上的点击。
我正在尝试使用ViewChild
来执行此操作,但无法使其正常工作。
// View
<ion-tabs #tabs>
<ion-tab [root]="tab1Root" tabIcon="home"></ion-tab>
<ion-tab #findTab [root]="tab2Root" [rootParams]="findTabParams" tabIcon="search"></ion-tab>
<ion-tab [root]="tab3Root" tabIcon="chatbubbles" [tabBadge]="unread?1:null" [tabsHideOnSubPages]=true></ion-tab>
<!--<ion-tab [root]="tab3Root" tabIcon="chatbubbles" [tabBadge]="totalUnreadMessages?.$value" [tabsHideOnSubPages]=true></ion-tab>-->
</ion-tabs>
// Controller
@ViewChild('findTab') findTab: ElementRef;
...
ngAfterViewInit() {
console.log('TAB elem ', this.findTab);
// How click the tab ?
}
如何触发标签的点击功能?
答案 0 :(得分:0)
看看这个plunkr:https://plnkr.co/edit/KBWa5YbFCYYVQI97ACRQ?p=preview
//our root app component
import {Component, NgModule, VERSION, ViewChild} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<button #btn (click)="testClick()">hello</button>
</div>
`,
})
export class App implements AfterViewInit {
@ViewChild('btn') myBtn;
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
}
testClick(){
window.alert("i have been clicked!")
}
ngAfterViewInit(){
this.myBtn.nativeElement.click();
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
答案 1 :(得分:0)
我决定采用这种方式,因为我在GitHub上被推荐:
document.getElementById(tabid).click();