Angular 2打开兼容模式

Obi*_*son 5 angular-material angular

我需要为Angular Material 2生成自定义主题.但是Angula 2团队提供的教程包括scss文件的以下代码:

@import '../../node_modules/@angular/material/core/theming/_all-theme';
@include mat-core(); $primary: mat-palette($mat-orange, 800);
$accent: mat-palette($mat-light-blue, 600, A100, A400);
$warn: mat-palette($mat-red, 600);
$theme: mat-light-theme($primary, $accent, $warn);

@include angular-material-theme($theme);
Run Code Online (Sandbox Code Playgroud)

生成前缀为.mat的 CSS类,我相信元素的材料v1表示法?

所以我决定使用mat-card和其他组件,但是当我这样做时,angular 2给了我这个错误

"mat-"前缀不能用于ng-material v1兼容模式.

任何帮助如何A)打开兼容模式B)生成主题的另一种方式?

dar*_*nge 5

更新:

从2.0.0-beta.11开始,md-前缀已被完全弃用,mat-前缀应该用于前进.


如果您使用的版本低于2.0.0-beta.11,那么只有当您的项目与Angular Material 2并排使用AngularJS Material时,这才会成为问题.

如果您没有在项目中使用AngularJS Material,只需使用md-前缀,就不会出现兼容性问题(也就是CSS冲突).


解:

如果您的项目使用AngularJS Material AND Angular 2 Material,则需要避免CSS冲突:

导入NoConflictStyleCompatibilityMode应用程序的根模块.

import { NoConflictStyleCompatibilityMode } from '@angular/material'

@NgModule({
    ...,
    imports: [NoConflictStyleCompatibilityMode]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

然后使用md-前缀Angularjs材料元件和mat-前缀角材料2组的元素.


兼容模式@angular/material允许组件(带前缀md-)与AngularJS Material组件并排存在,不会发生任何CSS冲突.

启用后,兼容模式会强制所有模板API使用前缀mat-而不是md-.这将阻止AngularJS Material中的任何CSS 影响其中的组件@angular/material.

此处找到文档.

  • 请注意,beta.11已完全弃用"md"前缀并使用"mat"向前移动:https://github.com/angular/material2/blob/master/CHANGELOG.md#deprecation-of-md-prefix.这会影响所有类名,属性,输入,输出和选择器(CSS类在2月份已更改)."md"前缀将在下一个测试版中删除. (3认同)