【问题标题】:Change ion-col breakpoint in *ngFor更改 *ngFor 中的 ion-col 断点
【发布时间】:2019-11-28 20:03:25
【问题描述】:

您好,我想在显示数据库中的行时更改 ion-col 断点和宽度。

我希望 item.type= 'B' 的行为 col-12,但 item.type A、C、D 的行为 col-6。有什么想法吗?

      <ion-grid>
            <ion-row>
                <ion-col col-6 *ngFor="let item of items;" >
                    <ion-card>
                        <ion-card-content>
                            <div *ngIf="item.type==='A'">
                                some data
                            </div>
                            <div *ngIf="item.type==='B'">
                                some data 2
                            </div>
                            <div *ngIf="item.type==='C'">
                                some data 3
                            </div>
                            <div *ngIf="item.type==='D'">
                                some data 4
                            </div>
                        </ion-card-content>
                    </ion-card>
                </ion-col>
            </ion-row>
        </ion-grid>

【问题讨论】:

    标签: ionic-framework ionic3


    【解决方案1】:

    您可以使用 ionic 4 中的 size 属性来实现这一点。

     <ion-col *ngFor="let item of items;" [size]="item.type == 'B' ? 12 : 6 ">
                    <ion-card>
                        <ion-card-content>
                            <div *ngIf="item.type==='A'">
                                some data
                            </div>
                            <div *ngIf="item.type==='B'">
                                some data 2
                            </div>
                            <div *ngIf="item.type==='C'">
                                some data 3
                            </div>
                            <div *ngIf="item.type==='D'">
                                some data 4
                            </div>
                        </ion-card-content>
                    </ion-card>
     </ion-col>
    

    引用https://ionicframework.com/docs/layout/grid#all-breakpoints

    对于 ionic 3,您可以使用此代码

    <ion-grid>
        <ion-row *ngFor="let item of items;">
          <ng-container *ngIf="item.type == 'B'">
              <ion-col col-12 >
                  <ion-card>
                      <ion-card-content>
                          <div *ngIf="item.type==='A'">
                              some data
                          </div>
                          <div *ngIf="item.type==='B'">
                              some data 2
                          </div>
                          <div *ngIf="item.type==='C'">
                              some data 3
                          </div>
                          <div *ngIf="item.type==='D'">
                              some data 4
                          </div>
                      </ion-card-content>
                  </ion-card>
              </ion-col>
          </ng-container>
          <ng-container *ngIf="item.type != 'B'">
              <ion-col col-6 >
                  <ion-card>
                      <ion-card-content>
                          <div *ngIf="item.type==='A'">
                              some data
                          </div>
                          <div *ngIf="item.type==='B'">
                              some data 2
                          </div>
                          <div *ngIf="item.type==='C'">
                              some data 3
                          </div>
                          <div *ngIf="item.type==='D'">
                              some data 4
                          </div>
                      </ion-card-content>
                  </ion-card>
              </ion-col>
          </ng-container>
        </ion-row>
    </ion-grid>

    【讨论】:

    • 但所有类型都是 12
    • size 属性是在 ionic 4 中引入的,您使用的是 ionic 4 吗? ionicframework.com/docs/layout/grid#all-breakpoints
    • 用 [size] 替换大小
    • on [size] 我得到一个模板解析错误大小不是 ion-col 的已知属性对不起我以为我在 ionic 4 但我在 3 虽然我记得迁移到 4跨度>
    • 离子:离子(离子 CLI):4.12.0(C:\Users\Simos\AppData\Roaming\npm\node_modules\ionic)离子框架:离子角 3.9.2 @ionic/app -脚本:3.2.3 Cordova:cordova(Cordova CLI):8.0.0 Cordova 平台:android 7.1.2 Cordova 插件:cordova-plugin-ionic-keyboard 2.1.3,cordova-plugin-ionic-webview 2.2.5,(和其他 14 个插件)系统:Android SDK 工具:26.1.1(C:\Users\Simos\AppData\Local\Android\Sdk)NodeJS:v10.13.0(C:\Program Files\nodejs\node.exe)npm: 6.4.1
    【解决方案2】:

    你可以使用这个技巧:

    如果你通读,你会看到一个叫做 else 块的东西:

    <div class="hero-list" *ngIf="heroes else loading">
     ...
    </div>
    
    <ng-template #loading>
     <div>Loading...</div>
    </ng-template>
    

    所以你的情况是

    <div *ngIf="item.type=='B' else sixRow">
     ...
    </div>
    
    <ng-template #sixRow>
     ...
    </ng-template>
    

    【讨论】:

    • 感谢@rtpriamy 我知道 ngIf 和其他,但 ngfor 应该在 ion-col 上,对吗?我将如何获取对象的类型参数来调用 ngif?
    • 我认为drs answer应该会为您解决,如果没有,我会再调查一下?
    • 嗯,我没有太多 Ionic3 经验,但查看它使用 col 宽度指令的文档,你 cannot conditionally set a directive。你是说如果ion-rowion-col 之间有一个div,那么网格就会中断?
    猜你喜欢
    • 2021-07-11
    • 2019-09-24
    • 2017-12-28
    • 2022-07-01
    • 2020-03-16
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多