问题标签 [angular2-meteor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - Angular2-meteor - 在订阅函数中使用排序的 find() 后未定义的变量
我是 Meteor 和 angular2-meteor 包的新手,我正在尝试按照此处找到的精心制作的“社交”应用程序教程学习如何使用它们:Socially turorial。
在尝试我在那里看到的关于发布/订阅功能的内容时,我发现了一个我不知道如何解决的问题。为了清楚起见,我用这个结构做了一个非常简单的项目:
/typings/test.d.ts
/collections/tests.ts
/server/main.ts
/server/test.ts - 只是发布所有内容
/client/app.ts - 订阅排序结果
/client/app.html - 一个简单的 ngFor,显示结果
如果我使用 Mongo 控制台从数据库中插入或删除条目,一切正常。如果我在不更改其顺序的情况下更新现有条目,也会发生同样的事情。但是,如果我尝试更新已经存在的条目之一,在其“num”字段中放置更高的数字,使它们切换位置,则应用程序将停止正常工作,并且浏览器控制台会显示:
例外:类型错误:l_test0 在 Socially@3:15 的 [{{test._id}} 中未定义]
例如,如果我有:
编号:1 - 编号:6
编号:2 - 编号:5
编号:3 - 编号:4
然后我尝试用 "num" 4 将 "num" 改为 7 来更新条目,新结果应该是:
- 编号:3 - 编号:7
- 编号:1 - 编号:6
- 编号:2 - 编号:5
这给了我上述错误。
这可能很愚蠢,但由于我是一个真正的流星新手,我似乎无法理解出了什么问题,如果你能帮我一把,我会很高兴。
先感谢您。
编辑: 在我的原始项目中,我使用表单直接从页面添加/删除条目。在这个测试项目中,我删除了所有不必要的东西以使其尽可能简单并使用 mongo 控制台:
db.tests.insert({_id: 1, num: 6})
db.tests.insert({_id: 2, num: 5})
db.tests.insert({_id: 3, num: 4})
db.tests.update({_id: 3}, {$set: {num: 7}})
如果我这样做:
db.tests.find()
表明:
{ "_id" : 1, "num" : 6 }
{ "_id" : 2, "num" : 5 }
{ "_id" : 3, "num" : 7 }
meteor - Angular 2 Meteor 反应性地改变路线
我正在玩 angular2 和流星(我都是新手),如果我能在集合中找到某个文档,我想改变路线。我在Angular 2 Meteor 教程中读到 MeteorComponent 类有方法 subscribe 和 autorun 所以我正在尝试使用这些方法来完成工作(不确定这是否是最好的方法 - 我没有删除 autopublish )。但现在它不起作用。我的组件是:
在我的幻想中,在 ngOnInit 中调用的 getInvitation() 应该订阅“邀请”集合,并且 autorun() 应该检查是否找到了文档,如果找到了应该改变路由。但我没有收到错误,路线也没有改变。哪一个应该是响应性地更改路由以响应集合更改的正确方法?
meteor - 在 angular2-meteor 应用程序中安装 gulp
提前致谢。我正在制作一个Angular2-meteor应用程序。在应用程序中,我想在Angular2-meteor中使用Gulp来缩小和编译打字稿代码,但我无法安装 gulp包。你能帮我吗,谢谢。
meteor - 使用组件输入更新模板
前言:我是 Meteor、Angular 和 Typescript 的新手,所以这里很可能会出现 XY 问题。
我正在使用 Meteor 和 Angular 2(使用angular2-meteor包)开发一个简单的项目管理应用程序,其中结构(目前)由具有事件的项目组成。一种视图是项目列表。单击项目会显示项目详细信息的模式,包括项目事件列表。因此,三个组件:ProjectList
、ProjectDetails
和ProjectEventsList
。ProjectDetails
使用Session
变量来知道要显示哪个项目,并且有效。但是,模式中的事件列表在为单击的第一个项目创建后不会更新。
项目事件列表.ts
据我了解(尽管我可能会离开这里),我很难autorun
自动运行。我试过放一个getter和setter,projectId
当我点击一个项目时它会更新,但里面的代码在autorun
第一次点击后不会运行。我尝试过的事情:
subscribe()
切换和的嵌套autorun()
。- 添加/删除 autobind 参数到
subscribe()
和autorun()
。我真的不明白那应该做什么。 将订阅代码移动到 setter 上
projectId
:当我这样做时,列表停止显示任何项目。
如果这一切看起来应该可行,我将创建一个小测试用例来发布,但我希望这里的某些内容对于那些知道的人来说显然是错误的。谢谢!
meteor - Meteor 方法是如何执行的?
按照这个http://www.angular-meteor.com/tutorials/socially/angular2/meteor-methods
有:
然后在 Party-Detail.ts 我们有
当用户点击 Invite 时代码是如何执行的?
同时在客户端和服务器端?
meteor - 在angular2-meteor项目中的两个组件之间传递值
我正在使用 angular2-meteor。
当我尝试在两个组件之间传递一个值时(当第一个组件中的值发生变化时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:
- 一种方式是流星方式:使用
this.autorun
andSession.get
。 - 另一种方式是 angular2 方式:使用
Injectable
service withEventEmitter
.
应该先走哪条路?或者有没有其他更好的方法?谢谢
meteor - 当我从集合中删除文档时,并非所有客户的视图都会更新。为什么?
我正在使用Angular2-meteor,它正在使用 Angular2 Beta 1(截至目前)。
我有一个简单的组件,其中包含:
- 添加文档的按钮。显示的新文档带有一个按钮,可通过其 _id 将其删除。
- 还有一个“全部删除”按钮,它循环通过 collection.find() 删除每个文档的 _id。
它大部分工作正常。您可以使用各自的删除按钮添加和删除文档。当您“全部删除”时,它会将它们全部从数据库中删除。游标报告 count() 为 0。新的 collection.find().count() 报告为 0。但它只删除了由客户端上的 *ngFor 显示在模板上的第一个removeAll()
文档。其他文档仍显示在浏览器中。当您重新加载页面时,它会显示数据库的正确内容。其他连接的客户端始终显示正确的集合内容。只有启动的客户端removeAll()
会受到影响。
模板、“全部删除”按钮和 *ngFor 显示文档
组件:
meteor - Angular2 中的 *ngIf 服务不能很好地工作
编辑:嗯,我应该更清楚。这是一个 angular2-meteor 项目。因为流星是反应性的,所以可能有其他方式。但是@lodewijk-bogaards 是纯 Angular2 项目的一个很好的解决方案。
我正在使用 Angular 2(TypeScript)。
我尝试使用ChatService
服务将值“12345”从 传递App
到ChatDetailsComponent
.
如果布尔showChatDetails
值为真,那么当我第一次单击“显示”按钮时,它将显示“12345”,效果很好。
问题是,如果布尔值showChatDetails
是假的,它会在我第二次单击“显示”按钮后显示“12345”。我不知道为什么我第二次点击它时它会起作用,这也应该是第一次。
(请不要切换到 [hidden],因为我这里需要 *ngIf。)
// 应用程序.ts
// 聊天详细信息.component.ts
// 聊天服务.ts
meteor - 如何在 angular2-meteor 项目中使用 RxJS?
我有一个 angular2-meteor 项目。
我尝试使用 RxJS,所以我在我的代码中添加了这些:
但是当我运行它时,它显示:
找不到模块“rxjs/Observable”。
我需要从Atmosphere安装任何软件包吗?
mongodb - 将 Meteor + Angular2 应用程序部署到 Heroku
我有一个使用 Meteor、Angular2(使用angular-meteor包)、Typescript 和 MongoDB 编写的应用程序。我试图把它放在 Heroku 上并遇到困难。我正在使用这个流星 buildpack。我不确定问题出在 Meteor、Heroku 还是 Angular2 上,但我怀疑 Heroku 没有为 Angular2 正确配置。该网站位于http://alfred-zahner.herokuapp.com/,我得到的错误是:
例外:没有 t 的提供者!(e -> t)
我检查了 Heroku 日志,没有任何问题的迹象。我的部分问题是我看不到什么t
和e
是什么,因为有人(Heroku?)正在丑化 JavaScript。我不确定如何进行调试。
解决此问题的一种方法是找出并修复错误,但如果有更好的构建包,或者甚至更好(必须免费!)我可以使用的托管环境,我会很高兴。
编辑
这不是 Heroku 的问题。部署到 Meteor 的内置部署测试 ( meteor deploy site.meteor.com
) 时也会发生同样的事情。meteor deploy --debug site.meteor.com
但是,如果我使用.