Angularを書いていて、 Type 'string' is not assignable to type 'number'.
と言われて驚いたので調べました。 えー、そのくらいよしなに変換してくれるんじゃないのー?! 結構型に厳しいんですね。 Typescript, toFixed. Type 'string' is not assignable to type 'number'に(12.32).toFixed(2)
とあるので試すとその通りでした。 この2ってなんだろう? と思ったら、「小数点以下第2位までの表示(第3位で四捨五入、無ければ0埋め)」ってことなんですね。
Category: Typescript
Number to String on Angular/TypeScript
Downloading a File on Angular
JHipsterのAngularでfileをdownloadするUIを作っていました。 AタグlinkからserverのAPI叩いて、 Content-Disposition: attachment;filename=...
と返せば済むだろう、 と思ってたんですが、そういえば認証通さねばなりません。 となると一旦browserで全部受けてblobにしてから返さないとならなさそうです。 認証header自体は、JHipsterならHTTPのinterceptorがあって、 フツーにthis.http.get(...)
とかすれば勝手に付けてくれます。 HTTP Headerの付け方は公式documentにある通りです。 Angular 2 download .CSV file click event with authenticationを参考に、 service化しました。 FileSaver.jsを使うと楽そうですけど、 そんなに互換性が重視されるわけではないことと大したcode量ではないことから、 自分で書きました。 最後、window.open(url);
だとwindowが上がってきてしまうので、 AngularでCSVをAPIからDLするときに色々したお話にあるように、 裏で自分で<a href="...">
作って自分で叩いて自分で消す、 というように書いたら、うまく行きました。
New Map on Typescript
Angular5で、といいますかTypescriptで、 Map
を一度にnewしたかったんですが、 どうするのかなーって。
new Map()
して.set()
でmethod chainで繋いで行くのもありますが、 一番簡単なのは、 new Map([['key1','val1'],['key2','val2'],['key3','val3']])
という ようなnested arrayでしょうか。 cf. Map & Set
ただ、こうするとmap['key1']
やdelete(map['key2'])
は効かず、 map.get('key1')
やmap.delete('key2')
としないとならない、 というのにハマりました。