带有打字稿的角度材料设计

Posted

技术标签:

【中文标题】带有打字稿的角度材料设计【英文标题】:angular material design with typescript 【发布时间】:2017-01-12 04:45:42 【问题描述】:

我是打字稿的新手,打字。模糊理解类型定义并尝试使用打字稿和角度材料设计设置角度 1.5 项目。

我在类型>全局>角材料中有角材料类型定义。 我不知道我可以导入什么模块以及在哪里检查。如果我像下面的例子一样,我得到一个例外:模块'材料'不可用!

import * as angular from 'angular';
import * as material from 'angular-material';

angular.module('app.services', []);
angular.module('app', ['app.services', 'material']);

types>globals>angular-material 中 index.d.ts 的顶部是

declare module 'angular-material' 
    var _: string;
    export = _;


declare namespace angular.material  ...

提前致谢。

【问题讨论】:

【参考方案1】:

应该是这样的,

angular.module('app.services', []);
angular.module('app', ['app.services', 'ngMaterial']);

【讨论】:

导入语句应该是什么?从“角度材料”导入 ngMaterial; 应该是 import ngMaterial from 'angular-material'; 它给出错误:模块 ''angular-material'' 没有默认导出。【参考方案2】:

你不应该从 'angular-material' 导入 只需添加对类型的引用:

/// <reference path="../typings/angular-material/angular-material.d.ts" />

(请务必先安装 angular-materials 的类型)

然后使用:

angular.module('app.services', []);
angular.module('app', ['app.services', 'ngMaterial']);

【讨论】:

【参考方案3】:

例如,在定义材料提供者时,您应该删除单引号

import * angular from 'angular';
import * as material from 'angular-material';

angular.module('app.services', []);
angular.module('app', ['app.services', material]);

这将解决您的问题。

对于导入材料样式表,您可以使用以下代码。

import 'angular-material/angular-material.css';

对于没有类型定义的库,您可以使用以下代码。

import * as angular from 'angular';
require('../../../node_modules/angular-messages');

angular.module('app.services', []);
angular.module('app', ['app.services', 'ngMessages']);

注意:这里你应该使用字符串来定义提供者

【讨论】:

【参考方案4】:

小,希望有用,补充(我最近遇到的经验)。如果您需要在 TS 单元测试中使用 angular-material,您也需要将其导入到规范文件中(而在主代码中,您只需导入一次并在主模块中设置为依赖项)。然后在顶部 import 'angular-material'; 就足够了,并为必要的服务添加相应类型的变量,例如let dialog:ng.material.IDialogService;

【讨论】:

以上是关于带有打字稿的角度材料设计的主要内容,如果未能解决你的问题,请参考以下文章

带有打字稿的 Angular 5 websocket 示例

我可以在使用打字稿的材料 ui 中单击时更改框背景颜色吗?

带有打字稿的枚举

如何使用带有打字稿的“调试”模块

带有打字稿的MongoDB聚合

在自定义输入元素上使用带有打字稿的 useRef