Skip to main content
Version: v7 (beta)

ion-textarea

scoped

textareaコンポーネントは、複数行のテキスト入力に使用されます。ネイティブの textarea 要素は、コンポーネントの内部でレンダリングされます。ネイティブのtextareaを制御することで、textareaコンポーネントのユーザーエクスペリエンスとインタラクティブ性を向上させることができます。

ネイティブのtextarea要素とは異なり、Ionicのtextareaは要素内部のコンテンツからその値を読み込むことをサポートしていません。textareaの値はvalue属性で設定しなくてはなりません。

textareaコンポーネントはIonicのプロパティに加えて ネイティブのtextareaの属性 に対応します。

基本的な使い方

Label Placement

ラベルは、デフォルトでそのコンテンツの幅を占めます。 開発者は labelPlacement プロパティを使用して、ラベルがどのように配置されるかを制御することができます。

Filled Textareas

Material Designでは、テキストエリアの塗りつぶしスタイルが用意されています。アイテムの fill プロパティは "solid" または "outline" のいずれかに設定することができます。

fill スタイルはテキストエリアのコンテナを視覚的に定義するため、fill を使用するテキストエリアは ion-item で使用すべきではありません。

Helper & Error Text

ヘルパーテキストとエラーテキストは、helperTexterrorText プロパティを使って textarea 内で使用することができます。エラーテキストは、ion-invalidion-touched クラスが ion-textarea に追加されていない限り表示されません。これにより、ユーザがデータを入力する前にエラーが表示されることはありません。

Angularでは、これはフォームバリデーションによって自動的に行われます。JavaScript、React、Vueでは、独自のバリデーションに基づいてクラスを手動で追加する必要があります。

Textarea Counter

textareaカウンターは、textareaの下に表示されるテキストで、textareaが受け付ける合計文字数のうち、何文字が入力されたかをユーザーに通知します。カウンターを追加する場合、デフォルトの動作は、表示される値を inputLength / maxLength としてフォーマットすることです。この動作は、counterFormatterプロパティにフォーマッタ関数を渡すことでカスタマイズすることができます。

Autogrow

autoGrowプロパティがtrueに設定されている場合、テキストエリアはその内容に基づいて拡大・縮小します。

Clear on Edit

clearOnEditプロパティをtrueに設定すると、テキストエリアが編集削除された後、再度入力されるとクリアされます。

レガシーtextarea構文からの移行

Ionic 7.0では、よりシンプルなtextareaの構文が導入されました。この新しい構文は、textareaを設定するために必要な定型文を減らし、アクセシビリティの問題を解決し、開発者の体験を向上させます。

開発者はこの移行を一度に1つのtextareaで行うことができます。開発者は従来の構文を使い続けることができますが、できるだけ早く移行することをお勧めします。

最新の構文の使い方

最新の構文を使うには、3つのステップがあります。

  1. ion-label を削除して、代わりに ion-textarealabel プロパティを使用します。ラベルの配置は ion-textarealabelPlacement プロパティを使用して設定することができる。
  2. テキストエリア固有のプロパティを ion-item から ion-textarea に移動します。これには、countercounterFormatterfillshapeプロパティが含まれます。
  3. ion-itemhelpererror スロットの使用を削除し、代わりに ion-textareahelperTexterrorText プロパティを使用します。
<!-- Label and Label Position -->

<!-- Before -->
<ion-item>
<ion-label position="floating">Label:</ion-label>
<ion-textarea></ion-textarea>
</ion-item>

<!-- After -->
<ion-item>
<ion-textarea label="Label:" label-placement="floating"></ion-textarea>
</ion-item>


<!-- Fill -->

<!-- Before -->
<ion-item fill="outline" shape="round">
<ion-label position="floating">Label:</ion-label>
<ion-textarea></ion-textarea>
</ion-item>

<!-- After -->

<!-- Textareas using `fill` should not be placed in ion-item -->
<ion-textarea fill="outline" shape="round" label="Label:" label-placement="floating"></ion-textarea>

<!-- Textarea-specific features on ion-item -->

<!-- Before -->
<ion-item counter="true">
<ion-label position="floating">Label:</ion-label>
<ion-textarea maxlength="100"></ion-textarea>
<div slot="helper">Enter text</div>
<div slot="error">Please enter text</div>
</ion-item>

<!-- After -->

<!--
Metadata such as counters and helper text should not
be used when a textarea is in an item/list. If you need to
provide more context on a textarea, consider using an ion-note
underneath the ion-list.
-->

<ion-textarea
label="Label:"
counter="true"
maxlength="100"
helper-text="Enter text"
error-text="Please enter text"
></ion-textarea>

レガシー構文の使用

Ionicは、アプリが最新のtextarea構文を使用しているかどうかをヒューリスティックで検出します。場合によっては、レガシーな構文を使い続けることが望ましいこともあります。開発者は、ion-textarealegacyプロパティをtrueに設定することで、そのインスタンスのtextareaがレガシー構文を使用するように強制できます。

テーマ

Interfaces

TextareaChangeEventDetail

interface TextareaChangeEventDetail {
value?: string | null;
}

TextareaCustomEvent

必須ではありませんが、このコンポーネントから発行される Ionic イベントでより強く型付けを行うために、CustomEvent インターフェースの代わりにこのインターフェースを使用することが可能です。

interface TextareaCustomEvent extends CustomEvent {
detail: TextareaChangeEventDetail;
target: HTMLIonTextareaElement;
}

プロパティ

autoGrow

Descriptiontrueの場合、textareaコンテナはtextareaの内容に応じて拡大・縮小します。
Attributeauto-grow
Typeboolean
Defaultfalse

autocapitalize

Descriptionテキスト値がユーザーによって入力/編集される際に、自動的に大文字にするかどうか、またどのようにするかについて示します。利用可能なオプションoff", "none", "on", "sentences", "words", "characters"`.
Attributeautocapitalize
Typestring
Default'none'

autofocus

Descriptionこの Boolean 属性により、ページロード時にフォームコントロールにInputフォーカスが当たるように指定することができます。
Attributeautofocus
Typeboolean
Defaultfalse

clearOnEdit

Descriptiontrueの場合、編集時にフォーカスされた後、値がクリアされる。デフォルトは type"password" のとき true で、それ以外のときは false です。
Attributeclear-on-edit
Typeboolean
Defaultfalse

color

Descriptionアプリケーションのカラーパレットから使用する色を指定します。デフォルトのオプションは以下の通りです。 "primary", "secondary", "tertiary", "success", "warning", "danger", "light", "medium", と "dark" です.色に関する詳しい情報は theming を参照してください。
Attributecolor
Type"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined
Defaultundefined

cols

Descriptionテキストコントロールの可視幅を、平均文字幅で指定します。指定する場合は、正の整数である必要があります。
Attributecols
Typenumber | undefined
Defaultundefined

debounce

Descriptionキーを押すたびに ionChange イベントが発生するまでの待ち時間をミリ秒単位で設定します。これは ngModelv-model などのフォームバインディングにも影響します。
Attributedebounce
Typenumber
Default0

disabled

Descriptiontrueの場合、ユーザはテキストエリアと対話することができません。
Attributedisabled
Typeboolean
Defaultfalse

enterkeyhint

Descriptionどのエンターキーを表示するかのブラウザへのヒント。指定可能な値。enter", "done", "go", "next", "previous", "search", and "send"`.
Attributeenterkeyhint
Type"done" | "enter" | "go" | "next" | "previous" | "search" | "send" | undefined
Defaultundefined

inputmode

Descriptionどのキーボードを表示するかのブラウザへのヒント。指定可能な値。none", "text", "tel", "url", "email", "numeric", "decimal", and "search"`.
Attributeinputmode
Type"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | undefined
Defaultundefined

maxlength

Descriptiontype属性の値が text, email, search, password, tel, または url の場合、この属性はユーザーが入力できる最大文字数を指定します。
Attributemaxlength
Typenumber | undefined
Defaultundefined

minlength

Descriptiontype属性の値が text, email, search, password, tel, または url の場合、この属性はユーザーが入力できる最小文字数を指定します。
Attributeminlength
Typenumber | undefined
Defaultundefined

mode

Descriptionmodeは、どのプラットフォームのスタイルを使用するかを決定します。
Attributemode
Type"ios" | "md"
Defaultundefined

name

Descriptionフォームデータとともに送信されるコントロールの名前。
Attributename
Typestring
Defaultthis.inputId

placeholder

Description入力が値を持つ前に表示される指示文。
Attributeplaceholder
Typestring | undefined
Defaultundefined

readonly

Descriptiontrueの場合、ユーザーは値を変更することができません。
Attributereadonly
Typeboolean
Defaultfalse

required

Descriptiontrueの場合、ユーザーはフォームを送信する前に値を入力する必要があります。
Attributerequired
Typeboolean
Defaultfalse

rows

Descriptionコントロールの可視テキスト行数。
Attributerows
Typenumber | undefined
Defaultundefined

spellcheck

Descriptiontrueの場合、その要素のスペルチェックと文法チェックが行われる。
Attributespellcheck
Typeboolean
Defaultfalse

value

Descriptiontextareaの値です。
Attributevalue
Typenull | string | undefined
Default''

wrap

Descriptionコントロールがテキストをどのように折り返すかを示します。
Attributewrap
Type"hard" | "off" | "soft" | undefined
Defaultundefined

イベント

NameDescription
ionBlurInputのフォーカスが外れたときに発行されます。
ionChange入力値が変化したときに発行されます。
ionFocusInputにフォーカスが当たったときに発行されます。
ionInputキーボード入力が発生したときに発します。

メソッド

getInputElement

Description要素の内部で使用されるネイティブの <textarea> 要素を返します。
SignaturegetInputElement() => Promise<HTMLTextAreaElement>

setFocus

Descriptionion-textareaのネイティブtextareaにフォーカスを設定します。グローバルなtextarea.focus()` の代わりに、このメソッドを使用します。
SignaturesetFocus() => Promise<void>

CSS Shadow Parts

No CSS shadow parts available for this component.

CSSカスタムプロパティ

NameDescription
--backgroundtextareaの背景
--border-radiusテキストエリアの境界半径
--color本文の色
--padding-bottomテキストエリアのBottom Padding
--padding-endテキストエリアの方向が左から右の場合はRight Padding、右から左の場合はLeft Paddingを使用します。
--padding-starttextareaの方向が左から右の場合はLeft Padding、右から左の場合はRight Padding。
--padding-toptextareaのTop Padding
--placeholder-colorPlaceholderテキストの色
--placeholder-font-stylePlaceholderテキストのスタイル
--placeholder-font-weightPlaceholderテキストの重さ
--placeholder-opacityPlaceholderテキストの不透明度

Slots

No slots available for this component.