LoginSignup
0
0

More than 1 year has passed since last update.

[ionic] ion-contentがうまく動かない場合の確認点

Posted at

ion-contentを使っているページで、どうしても表示が意図通りにならず、
色々と苦戦した結果、思わぬミスをしていることになかなか気づきませんでした。
個人的には、不用意にdivを使わず、ng-containerを使う方が良い、と反省しました。

バージョン等

  • Ionic 6.15.0
  • Angular: 10.0.14

私的な結論

  • ion-contentの上位にdiv を使わない。*ngIfなどを使いたい場合は、ng-containerを使うようにする。

現象

  • ion-contentを使っていたページで、なぜか不要なスクロールが発生してしまうなど、意図しない状態となりました。
  • Chrome のdevlopment tool で確認したところ、ion-contentのサイズが意図通りになっていない(想定よりも高さが小さい)状態でした。

修正前のコード

  • 不具合が起きていたコードは下記のような感じでした。
  • isShowIntroが trueの時だけ、説明を表示します。app-introduction、app-titleは自作のコンポーネントです。
  • 実際、動作はこのコードでも意図通りに動いていましたが、ion-contentの高さがなぜかページサイズよりも小さくなってしまいます。
start.page.html(不具合あり)
<div *ngIf="isShowIntro">
  <app-introduction></app-introduction>
</div>
<div *ngIf="!isShowIntro">
  <ion-header>
    <ion-toolbar color="primary">
      <ion-title>{{'APPTITLE'| translate }}</ion-title>
    </ion-toolbar>
  </ion-header>
  <ion-content [fullscreen]="true">
    <app-title></app-title>
  </ion-content>
</div>

スクリーンショット 2021-11-30 22.49.04.png

修正後のコード

  • divの代わりに ng-containerを使用したところ、正常に動作するようになりました。
start.page.html(不具合なし)
<ng-container *ngIf="isShowIntro">
  <app-introduction"></app-introduction>
</ng-container>
<ng-container *ngIf="!isShowIntro">
  <ion-header>
    <ion-toolbar color="primary">
      <ion-title>{{'APPTITLE'| translate }}</ion-title>
    </ion-toolbar>
  </ion-header>
  <ion-content [fullscreen]="true">
    <app-title></app-title>
  </ion-content>
</ng-container>

スクリーンショット 2021-11-30 22.47.26.png

考察

  • 公式のページもよく読んだのですが、ion-contentよりも上位に 不要なタグを入れてはいけないなどの記載がなかったため、なかなか問題に気づけませんでした。
  • もし似たような現象に悩んでいる方がいましたら、確認してみてください。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0