0
0

More than 1 year has passed since last update.

【Angularアプリケーション開発 #5】双方向バインディング

Posted at

今回は双方向バインディングを実装してみます。
イメージとしては↓こんな感じです。
スクリーンショット 2022-05-31 23.39.43.png
入力フォームの田中太郎の「郎」の文字を消してみます。
すると、、、
スクリーンショット 2022-05-31 23.41.18.png
入力フォームと連動して名前をh2タグのラベルも「田中太」になりました。
このように、html側→ts側、ts側→html側へと値が共有されている状態を双方向バインディングと言います。(私個人のイメージです。)

それでは実装していきましょう。

  • まずはFormsModuleというモジュールをapp.module.tsに追加します。
    import文の追加と@NgModuleのimportsにFormsModuleの追加を行います。
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { MembersComponent } from './members/members.component';
import { MemberDetailComponent } from './member-detail/member-detail.component';
import { FooterComponent } from './footer/footer.component';

@NgModule({
  declarations: [
    AppComponent,
    MembersComponent,
    MemberDetailComponent,
    FooterComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    FormsModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
  • 次に双方向バインディングを扱う、htmlです。
members.component.html
<h2>{{member.name}}</h2>
<div>
  <label>id:</label>{{member.id}}
</div>
<div>
  <label>名前:
    <!-- 双方向データバインディング -->
    <input type="text" [(ngModel)]="member.name" placeholder="名前">
  </label>
</div>
  • 最後に双方向バインディングを行う、tsファイル側です。
members.component.ts
import { Component, OnInit } from '@angular/core';
import { Member } from '../member';

@Component({
  selector: 'app-members',
  templateUrl: './members.component.html',
  styleUrls: ['./members.component.css']
})
export class MembersComponent implements OnInit {

  member:Member =
    {id:'1',name:'taro'};

  constructor() { }

  ngOnInit(): void {
  }
}

補足です。
memberオブジェクトはMemberインターフェースを型としています。
別ファイルにインターフェースを定義しています。
ちなみにexportを付けることで外部から参照できるようになります。

member.ts
export interface Member{
  id:string;
  name:string;
}
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