2017 年 1 月更新:
Angular 2 团队最近添加了一个新的 NPM 包 flex-layout 仅用于布局。它是一个独立于棱角材料的独立包装。
完整的说明可在github page README 中找到。
安装模块:
npm install @angular/flex-layout -save
在 app.module.ts(或等效)中,声明模块:
import {FlexLayoutModule} from "@angular/flex-layout";
@NgModule({
imports: [
...
FlexLayoutModule
],
...
})
标记示例:
<div class="flex-container"
fxLayout="row"
fxLayout.xs="column"
fxLayoutAlign="center center"
fxLayoutAlign.xs="start">
<div class="flex-item" fxFlex="20%" fxFlex.xs="40%"> </div>
<div class="flex-item" fxFlex> </div>
<div class="flex-item" fxFlex="25px"> </div>
</div>
这是来自 flex-layout github 页面的plunker sample。
原答案:
您所指的docs 是针对angular1 材质的。 Angular2 材质仍然没有任何布局指令。
您可以通过简单的方式轻松地自己创建指令。
所有你需要知道的:
layout="row" 与 style="display:flex;flex-direction:row" 相同
layout="column" => style="display:flex;flex-direction:column"
而flex 等于style="flex:1"
作为指令:
@Directive({
selector:'[layout]'
})
export class LayoutDirective{
@Input() layout:string;
@HostBinding('style.display') display = 'flex';
@HostBinding('style.flex-direction')
get direction(){
return (this.layout === 'column') ? 'column':'row';
}
}
flex 指令,像这样使用它:<div flex> 或 <div flex="10"> 0 - 100% 之间的任何数字。另外,为了好玩,我添加了收缩和增长输入
@Directive({
selector:'[flex]'
})
export class FlexDirective{
@Input() shrink:number = 1;
@Input() grow:number = 1;
@Input() flex:string;
@HostBinding('style.flex')
get style(){
return `${this.grow} ${this.shrink} ${this.flex === '' ? '0':this.flex}%`;
}
}
在不将它们添加到每个组件的情况下在任何地方使用它们:
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent,FlexDirective ,LayoutDirective ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
这是plunk中的示例