angular - 在 Angular 中操作/引用 DOM 元素的正确方法

标签 angular ionic-framework

我有以下 ionic 段 HTML 代码:

<ion-segment (ionChange)="segmentChanged($event)" scrollable>
    <ion-segment-button checked value="calendar">
        <ion-icon name="calendar"></ion-icon>
    </ion-segment-button>
    <ion-segment-button  value="list-box">
        <ion-icon name="list-box"></ion-icon>
    </ion-segment-button>  
</ion-segment> 

<ion-card [hidden]="true">
    test
</ion-card>
<ion-card>
    test
</ion-card>

我想交换当我按下分段按钮时哪张卡变得可见。现在我可以使用 Jquery 轻松解决此问题,但我想在不使用 JQuery 的情况下完成此操作。

我有以下事件,该事件正在 atm 正确触发:

segmentChanged(): void { console.log("我触发了") }

实现此功能的最佳(或良好)方法是什么?

最佳答案

您可以在组件中准备选项卡,在模板中使用 for 循环显示它们,并将其保存在当前选定选项卡的属性中。这样自动看数据就没问题了。

export interface Tab {
    code: string;
    name: string;
    icon: string;
}

...

// your component ts file
tabs: Tab[] = [
    {
        code: 'first',
        name: 'First tab',
        icon: 'first-icon',
    },
    {
        code: 'second',
        name: 'Second tab',
        icon: 'second-icon',
    },
];
currentTab: Tab = tabs[0];

segmentChanged(tab: Tab): void {
    this.currentTab = tab;
}


// template html file
<ion-segment scrollable>
    <ion-segment-button *ngFor="let tab of tabs" value="calendar" (click)="segmentChanged(tab)">
        <ion-icon [name]="tab.icon"></ion-icon>
    </ion-segment-button>
</ion-segment> 

<ion-card *ngFor="let tab of tabs">
    <ng-container *ngIf="tab.code === currentTab.code">
        {{ tab.name }}
    </ng-container>
</ion-card>

关于angular - 在 Angular 中操作/引用 DOM 元素的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58506670/

相关文章:

css - 渲染超过 20 列时 Angular Material Table 崩溃了

angularjs - 带有 Angular CLI 和实时重新加载的 ASP.NET Core

performance - 在cordova ionic中减少从冷启动开始的加载时间

javascript - ngClick 在 ngFor 内部

Angular:在构造函数中注入(inject)路由器给出错误

html - PrimeNg p-tabpanel 绑定(bind) headerStyleClass

css - fontawesome 仅在 -dev 上不可见但在线

ionic-framework - Ionic 3 中的 Iphone X 标题后有空格

angularjs - 在 Ionic Framework 应用程序中在浏览器中播放 YouTube 视频,但不在 Android 设备中播放