2017-01-24 10 views
6

Angular 2のテンプレートエンジンとしてHAMLを使用できますか?Angular2 with Haml

角2(バージョン2.3.1)では、CSSの代わりにscss/sassを使用できます。これは、angular-cliによる指定オプションで、--styleです。テンプレートの場合、cliは--inline-templateを設定してインラインテンプレート間でのみ変更することができます。それがサポートされていない限り

、どのように私はHAMLを書くために(角度-CLIバージョン1.0.0-beta.26で作成された)私の角度2のアプリケーションを設定する必要はありません、HTMLにそれをコンパイルしtemplateUrlとしてcomponentHTMLを使用できますか?

EDIT 角度/ cliはwebpackを使用します。私はwebpackをhamlをhtmlにレンダリングしてからすべてをバンドルする方法を知らない。 角度の内側にhaml-loaderを使用するにはどうすればよいですか?

答えて

2

外部テンプレートファイル(templateUrl)でのみ可能です。すべてのテンプレートを事前に処理してから使用するには、建物システム(webpack、gulp)を設定する必要があります。

+0

で実行する必要があり、それはあなたがしようとした持ち – DenniJensen

4

はい、間違いありません。 angle-cliを使用している場合は、最初にwebpack.config.jsファイルにアクセスする必要があります。これを行うには、

$ ng eject 

と入力します。これにより、編集が必要な設定ファイルが公開されます。この後、 "ng serve"ではなく "npm start"でサーバを起動する必要があることに注意してください。最後に、あなたのコンポーネントを変更

module: { 
    rules: [ 
    ... 
    { 
     test: /\.haml$/, 
     loaders: ['haml-haml-loader'] 
    }, 
    ... 

:あなたは、次のルールを追加webpack.config.jsファイルにあなたのモジュールのルールの下で続いてhaml-haml-loader

npm install haml-haml-loader --save-dev 

を使用することができますHAMLについては

次の方法で "haml"ファイルを使用してください:

@Component({ 
    selector: 'app', 
    template: require('./app.component.haml'), 
    styleUrls: ['./app.component.sass'], 
}) 

またあなたはこれがあなたを取得し、HAMLそれがあるべき

+0

行うために、私はそれを設定する必要がどのように答えていないのですか?

templateUrl: './app.component.haml', 

を使用することができますか私はHAMLがAngularのテンプレート構文を妨害し、構造的な指示を事前処理することに懸念しています –

+2

はい私は試してみましたが、うまくいきます。構造指令はそれ自体問題ではありません。 HTMLに戻す唯一の例は、関連値のないディレクティブです(例:

Something
または
)。しかし、haml-haml-loaderはhamlテンプレートに普通のhtmlを許しているので、本当に問題ではありません。 %div {* ngFor: "item of items"}のようなHAML構文はうまくいきます。 – kbjerring

+1

すごい!楽しかった。 – Plankton