关键词:
【中文标题】在 Angular2 模板的表达式中使用 JSON.stringify【英文标题】:Using JSON.stringify in an expression in Angular2 template 【发布时间】:2016-12-02 00:36:45 【问题描述】:我有一个小表达式来检查两个对象是否不同,以便显示这个元素(通过添加类名):
<div ngClass='JSON.stringify(obj1) != JSON.stringify(obj2) ? "div-show" : ""'></div>
问题是我得到这个错误:
Cannot read property 'stringify' of undefined
.
我需要一种解决方法或适当的解决方案(如果有)。谢谢。
PS:我使用 JSON.stringify() 来比较两个简单的对象,这里没什么特别的。
【问题讨论】:
【参考方案1】:你可以在你的组件中实现它。
myjson:any=JSON;
在你视图中这样做
<div ngClass='myjson.stringify(obj1) != myjson.stringify(obj2) ? "div-show" : ""'></div>
【讨论】:
感谢您的回答。您的代码运行良好,但@Jason Goemaat 的答案对我来说似乎更干净。 我的朋友没问题【参考方案2】:模板代码无法访问所有 javascript,只能访问组件属性和方法。我认为最好在您的组件上创建一个“字符串化”方法,但您可以设置一个 JSON 属性:
public constructor()
this.JSON = JSON;
我也认为你的表达方式是倒退的。 NgClass
将 css 类作为属性名和一个真/假值来判断该类是否在元素上,并且它需要放在括号中:
<div [ngClass]="'div-show': JSON.stringify(obj1) != JSON.stringify(obj2)"></div>
【讨论】:
感谢您的回答。您的答案和@rashfmnb 的答案几乎相同。关于添加,我用ngClass
经历了很多情况,我发现我的做法是使用ngClass
最可靠的方法。当然,你的工作完美,但在某些情况下,与我的相比,它没有。 [ngClass] 无法工作的一个示例:<div [ngClass]='classNameHolder1' [ngClass]='"class-name-2": isClassName2'></div>
。如果我错了,请随时纠正我。
public JSON : JSON;
字段也应在组件中定义,以免破坏 AOT【参考方案3】:
2 年后,您可以使用来自 @angular/common 的内置管道“JsonPipe”在 Angular Way 中完成此操作
@Component(
selector: 'json-pipe',
template: `<div>
<p>Without JSON pipe:</p>
<pre>object</pre>
<p>With JSON pipe:</p>
<pre>object | json</pre>
</div>`
)
export class JsonPipeComponent
object: Object = foo: 'bar', baz: 'qux', nested: xyz: 3, numbers: [1, 2, 3, 4, 5];
【讨论】:
这应该是选择的答案 使用 JSON 作为 ngClass 的条件时,管道如何工作?答案与问题所问的不符? 哇,好优雅!Angular2:我们可以在模板中插入哪些表达式
】Angular2:我们可以在模板中插入哪些表达式【英文标题】:Angular2:whatexpressionscanweinterpolateintemplate【发布时间】:2016-11-0406:47:10【问题描述】:我读到我们可以插入Javascript表达式。我们可以插入的有效Javascript表达式列表是什么... 查看详情
如何使用angular2在单个组件中调用多个模板
】如何使用angular2在单个组件中调用多个模板【英文标题】:Howtocallmultipletemplatesinsinglecomponentusingangular2【发布时间】:2017-04-1522:27:18【问题描述】:我是angularJs2的新手。我的要求是我想要单个组件中的多个模板。就像我有ForgetP... 查看详情
Angular2 NgFor在表达式中绑定数组
】Angular2NgFor在表达式中绑定数组【英文标题】:Angular2NgForbindarrayinexpression【发布时间】:2017-05-0822:38:36【问题描述】:ngfor循环中使用的数组,当它更新时,如何让Angular2重新运行该表达式?目前它不会输出任何东西,因为它在... 查看详情
在 Angular2 中使用 Typescript 读取 JSON
】在Angular2中使用Typescript读取JSON【英文标题】:ReadingJSONusingTypescriptinAngular2【发布时间】:2016-06-1203:47:42【问题描述】:在对Firebase进行POST之后,我从Firebase返回了这个"name":"-KBfn7iFNIxSuCL9B-g5"如何使用Typescript读取POST请求返回的... 查看详情
async/await 防止 Angular2 在模板语句中使用时渲染组件
】async/await防止Angular2在模板语句中使用时渲染组件【英文标题】:async/awaitpreventsAngular2fromrenderingthecomponentwhenusedintemplatestatement【发布时间】:2016-07-1008:28:43【问题描述】:单击组件的按钮时将执行以下方法。asynconClickButton()await... 查看详情
在 Angular 2 中使用 *ngFor 和 JSON 对象
】在Angular2中使用*ngFor和JSON对象【英文标题】:Using*ngForwithaJSONobjectinAngular2【发布时间】:2016-12-2913:40:03【问题描述】:我正在尝试实现一个解耦的wordpress解决方案,但在我的模板中显示JSON对象属性时有些困惑。我能够为WPAPI返... 查看详情
Typescript - 如何在 Angular2 中正确使用 jsPDF?
】Typescript-如何在Angular2中正确使用jsPDF?【英文标题】:Typescript-howtocorrectlyusejsPDFinAngular2?【发布时间】:2016-11-2505:52:33【问题描述】:我创建了一个生成JSON数据的Angular2应用程序。我想将此JSON输出保存到文件中,最好是PDF文件... 查看详情
在 angular2 视图模板中传递枚举
】在angular2视图模板中传递枚举【英文标题】:Passenumsinangular2viewtemplates【发布时间】:2016-06-2517:25:02【问题描述】:我们可以在angular2视图模板中使用枚举吗?<divclass="Dropdown"dropdownType="instrument"></div>将字符串作为输入... 查看详情
angular2的模板语法
Angular应用管理着用户之所见和所为,并通过Component类的实例(组件)和面向用户的模板来与用户交互。从使用模型-视图-控制器(MVC)或模型-视图-视图模型(MVVM)的经验中,很多开发人员都熟悉了组件和模板这两个概念。在Angular中... 查看详情
在 Jquery 插件模板中绑定 Angular2 组件
】在Jquery插件模板中绑定Angular2组件【英文标题】:BindingAngular2componentsinsideofaJqueryplugintemplate【发布时间】:2016-12-0201:53:30【问题描述】:我正在Angular2项目中使用剑道。正确设置小部件没有问题:ngOnInit()letoptions=inputsToOptionObject... 查看详情
在angular2中动态加载HTML模板
】在angular2中动态加载HTML模板【英文标题】:DynamicallyloadHTMLtemplateinangular2【发布时间】:2017-04-0818:18:27【问题描述】:我使用angular-cli创建了一个项目,其中包含AppComponent如下:importComponentfrom\'@angular/core\';@Component(selector:\'app-roo... 查看详情
Angular2 从 JSON 数组中删除重复项
】Angular2从JSON数组中删除重复项【英文标题】:Angular2removingduplicatesfromanJSONarray【发布时间】:2016-11-2421:08:41【问题描述】:当我将我的应用程序移动到Angular2时,我的JSON数组中的过滤器出现问题。在Angular1.x中,这更容易。我在... 查看详情
如何在Angular2中使用另一个组件中的变量
】如何在Angular2中使用另一个组件中的变量【英文标题】:HowtouseavariablefromacomponentinanotherinAngular2【发布时间】:2017-06-2503:32:36【问题描述】:我想知道是否可以将一个组件中的变量值使用到另一个组件中,而不必使用第一个组... 查看详情
在 Angular2 的下拉列表中显示 json 数据
】在Angular2的下拉列表中显示json数据【英文标题】:ShowjsondatainadropdowninAngular2【发布时间】:2017-10-2522:35:58【问题描述】:这是json网址:https://jsonplaceholder.typicode.com/todos这是json结构:"userId":1,"id":1,"title":"delectusautautem","completed":f... 查看详情
Angular2 - 应该在模板中访问私有变量吗?
】Angular2-应该在模板中访问私有变量吗?【英文标题】:Angular2-shouldprivatevariablesbeaccessibleinthetemplate?【发布时间】:2016-04-0701:31:00【问题描述】:如果在组件类上声明了变量private,我应该能够在该组件的模板中访问它吗?@Compone... 查看详情
在 Django 模板中的 JSON 中安全地使用带有 html 的 JSON
】在Django模板中的JSON中安全地使用带有html的JSON【英文标题】:SafelyUsingJSONwithhtmlinsideoftheJSONinDjangoTemplates【发布时间】:2012-12-2618:20:45【问题描述】:如何在djangowebapp中安全地渲染JSON数据?在django的服务器上,我生成JSON数据,... 查看详情
如何在angular2和ionic2中同时保留组件的DOM元素和模板字符串
】如何在angular2和ionic2中同时保留组件的DOM元素和模板字符串【英文标题】:HowtokeepbothDOMelementsandtemplatestringofacomponentinangular2&ionic2【发布时间】:2018-03-0206:32:42【问题描述】:我使用ionic2&angular2构建应用程序,我想定义一... 查看详情
推荐一套angular2的ui模板
CoreUICoreUI是一款基于Bootstrap4的UI模板,有html、angular2,react和vue版.我是在使用angular2版本中发现其项目结构不符合angular风格指南推荐,同时感觉有一些组件其也不太支持,所以便有了一个改造它的想法。Daming-Core-UI这是我基于coreui... 查看详情