我正在尝试使用Angular2 Material Design组件,我无法使layout directives工作 . 例:
根据这些例子,这应该“正常”:
<div layout="row">
<div flex>First item in row</div>
<div flex>Second item in row</div>
</div>
<div layout="column">
<div flex>First item in column</div>
<div flex>Second item in column</div>
</div>
但它没有 - 它只是将页面上的元素呈现为普通的旧div . (我正在使用最新版本的Chrome) .
我错过了什么,比如有一个我应该导入的CSS文件吗?
3 回答
January 2017 Update :
Angular 2团队最近添加了一个新的NPM包flex-layout仅用于布局 . 它是一个独立于角材料的独立包装 .
完整说明可在github page README中找到 .
安装模块:
在app.module.ts(或等效的)中,声明模块:
标记示例:
这是从flex-layout github页面获取的plunker sample .
Original Answer :
你所指的docs是针对angular1材质的 . Angular2材质仍然没有任何布局指令 .
您可以通过简单的方式自行创建指令 .
所有你必须知道的:
layout="row"
与style="display:flex;flex-direction:row"
相同layout="column"
=>style="display:flex;flex-direction:column"
flex
等于style="flex:1"
作为指令:
flex指令使用它:
<div flex>
或<div flex="10">
任何0到100%的数字 . 另外,为了好玩,我增加了收缩和增加投入要在任何地方使用它们而不将其添加到每个组件:
以下是plunk中的示例
在Material2为我们提供LayoutModule之前,无需编写新指令 .
您只需从angular1导入angular layouts-attributes.css . 它将旧指令作为css选择器 .
例如css for directive layout-align =“end”它使用css选择器:[layout-align =“end”]
另一种选择是使用angular2-polymer来拉入Polymer的iron-flex-layout . 它稍微有限,并且与Material 1布局略有不同(但是Material 2布局也将具有不同的API) . 但它现在有效,并得到支持 .
还有一个指南here .