2016年12月26日月曜日

Angular2バリデーションの注意点

Angular2のバリデーションで躓いたのでメモ。 inputのerrorsプロパティはエラーの場合しかオブジェクトが生成されないため、 エラーメッセージを隠す際はngIfを使用する。


<form #form1="ngForm">
    <ion-grid>
        <ion-row>
            <ion-col>
                対象月:
                <input type="text"
                       [(ngModel)]="targetMonth"
                       [ngModelOptions]="{standalone: true}"
                       #t_month="ngModel"
                       pattern="^20(0[1-9]|[1-9][0-9])(0[1-9]|1[0-2])" ngModel />
                <p *ngIf="t_month.errors && t_month.errors.pattern" class="error">
                    値が不正です。西暦4桁+月2桁を入力してください。(例:201612)
                </p>
            </ion-col>
        </ion-row>
        <ion-row>
            <ion-col width-10>
                <button type="button" (click)="onSubmit()" [disabled]="!form1.form.valid">
                    データ取得
                </button>
            </ion-col>
        </ion-row>
    </ion-grid>
</form>


2016年12月20日火曜日

Wijmo5に関するサイト

Wijmo公式ドキュメント
wijmoの各モジュールについて、プロパティ、メソッド、イベントがまとめられている。

サンプルエクスプローラ
公式サンプル集。色々参考になります。
基本を押さえた上でないと使えない。

Angular2マークアップ構文
Angular2のマークアップ構文の開設。Wijmoモジュールを例にしているので分かりやすい。

FlexGrid入門
FlexGridの基本的な使い方の紹介。


Angular2でng-show

Angular2ではng-showがありません。


<div ngshow="data">....</div>


なんて書くとエラーで怒られてしまいます。


こんな時はこう書きましょう。


<div [hidden]="!data">....</div>


hiddenなのでtrueの時に隠れちゃいますから、否定の!をつけるのを忘れないようにご注意を。

「Cannot read property 'directive' of undefined in Wijmo grid」の対応

【事象】
Wijmo5の以下のディレクティブを使用するとエラーが発生する。
・wj-flex-grid-column
・wj-flex-grid-filter

【エラー内容】
TypeError: Cannot read property ‘directive’ of undefined

【構成】
Angular2:2.2.1
Wijmo:5.20163.234

【対応】
Wijmo5.20163.239にバージョンアップする。
ダウンロードはここから

【参考】
http://wijmo.com/topic/error-when-upgrade-angular-2-2-1-cannot-read-property-directive-of-undefined/



さんきゅーAlex!!

2016年11月22日火曜日

Angular2入門系サイト

■Angular2実践入門
最小構成のためおすすめ。
https://html5experts.jp/yusuke-naka/18596/
2016年3月22日

■Angular2入門風
なかなか
http://qiita.com/sisisin/items/355bb09845c8bea9d430
2016年11月11日

Oracle8iでEntityFrameworkを使う方法

表題の件、すっごい苦労しました。

1.SQLServerを用意
32bitのWindowsに、SQLServerをインストール。SQLServerは当然32bit。
なぜ32bitかというと、あの忌まわしき「Program Files (x86)」のせい。
インストールパスを変えてもSQLServerのインスタンスは「Program Files (x86)」に作成されていまうため、Oracleのライブラリがうまく使えなかったり。

2.レジストリ変更
OracleのDLLを使用するように書き換え。(バックアップを忘れずに)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI]
 "OracleXaLib"="oraclient8.dll"
 "OracleSqlLib"="orasql8.dll"
 "OracleOciLib"="oci.dll"

3.リンクサーバ作成
以下のコマンドでリンクサーバ作成。
 EXEC sp_addlinkedserver   'リンクテーブル名',  'Oracle',  'MSDAORA',  'TSN名'
 EXEC sp_addlinkedsrvlogin 'リンクテーブル名', 'FALSE',NULL, 'ログインID', 'パスワード'

4.VIEW作成
シノニムはEntityFrameworkで使えないのでVIEWを使う。
例)CREATE VIEW VIEW_1 AS SELECT * FROM [リンクサーバ名]..[スキーマ名].[テーブル名]


以上。
これでEntityFrameworkでアクセスできるOracle8iのできあがり。

【参考】

EntityFrameworkのEntityをJSONに変換


EntityFrameworkのEntityをWebAPIでJSON形式で返したかったので、変換してくれるライブラリを探してると、Json.NETというライブラリを見つけた。

サイトからダウンロードするか、NuGetで入手。
WebApplicationプロジェクトだと標準で入ってるかも。

■NuGetのインストールコマンド
PM> Install-Package Newtonsoft.Json


■使い方
string json = JsonConvert.SerializeObject(query);


とってもシンプル。