angular - Angular 2 Material Design 组件是否支持布局指令?

标签 angular flexbox material-design

我正在尝试使用 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 文件?

最佳答案

2017 年 1 月更新:

Angular 2 团队最近添加了一个新的 NPM 包 flex-layout仅用于布局。它是一个独立于 Angular Material 的独立包。
完整说明可在 github page 中找到。自述文件。

安装模块:

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>

这是一个plunker sample取自 flex-layout github 页面。


原始答案:

docs你指的是 angular1 Material 。 Angular2 Material 仍然没有任何布局指令。

您可以通过一种简单的方式轻松地自己创建指令。

所有你需要知道的:

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 中的示例

关于angular - Angular 2 Material Design 组件是否支持布局指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244788/

相关文章:

node.js - 使用服务通过 Angular 7 迭代 json

html - Flexbox 无法在 Firefox 中正常工作

html - 为什么align-self是: stretch not working on a flex item?

css - 如何将响应式视频嵌入设置与另一个 div 排成一行并且两者共享相同的高度?

java - 如何在 MaterialCalendarView 中显示特定日期和时间的事件?

css - 对齐卡片内容(图像、文本和按钮)

angular - 在响应式表单中初始化 FormGroup 的位置?

javascript - RXjs 在 Heroku 上部署时出现问题

java - 用户重新定位 float 操作按钮

WPF Material 设计 snackbar 中心文本和 zindex