noxi雑記

.NET、Angularまわりの小ネタブログ

TypeScript

RxJSのfromEventとfromEventPattern

RxJS にはイベントハンドリングをする API が2種類あります。 fromEvent と fromEventPattern です。前者は DOM イベントを処理するための API で、後者は任意のイベントハンドラーに対して add と remove を手動で処理する API です。 例えば KeyboardEvent…

Angular MaterialとWijmoの入力コントロールを組み合わせる

Angularを使用するときにデザインとして何を組み込むかは重要な要素です。私は主に Angular Material を使用してマテリアルデザインな Web アプリを開発しますが、 Wijmo の入力コントロールをそのまま組み込もうとすると機能面、デザイン面共に不都合が発生…

Angularの入力バリデーションをディレクティブとして実装する

Angularで入力バリデーションを実装する際、ReactiveFormではFormControlに対して様々なバリデーションを設定できますが、テンプレート駆動型だと設定することはできません。またReactiveFormもバリデーションを設定できるとは言え、事細かに全てをコードで…

Angular CDK の Portal で部分的に要素を差し込む

Angular のコンポーネントに対して外のコンポーネントから表示する要素を指定したい場合、 ng-content を使用すると自身の子要素として指定された要素を展開することができます。子要素を展開したい箇所が1つだけであれば ng-content を使用すれば十分ですが…

Angular CDK を使用して全画面ローディングを表示する

Angular Material をインストールすると必須の依存に含まれている Angular CDK (Component Dev Kit) 。 CDK に実装されている Overlay と Portal 、そして Angular Material の Progress spinner を使用して全画面ローディングを作ってみます。

Angular MaterialのFormFieldに独自の入力コントロールを配置する

Angular Materialには MatFormField というマテリアルデザインの入力コントロール表示を支援するコンポーネントがあります。こんな見た目のヤツです。 Angular Material標準では テキスト入力(1行) テキスト入力(複数行) ドロップダウン の3つがサポート…

Dexie.jsとTypeScriptでIndexedDBを操作する

Web技術を使用してリッチクライアントを作成するにはクライアント側でデータを保持することが時に求められます。データの保持はHTML5のAPIとしてkey-valueストアのWeb Storage、NoSQLのIndexedDB、2種類が存在します。今回はIndexedDBをTypeScriptで操作して…