问题标签 [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.

0 投票
2 回答
801 浏览

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 }

0 投票
1 回答
252 浏览

meteor - Angular 2 Meteor 反应性地改变路线

我正在玩 angular2 和流星(我都是新手),如果我能在集合中找到某个文档,我想改变路线。我在Angular 2 Meteor 教程中读到 MeteorComponent 类有方法 subscribe 和 autorun 所以我正在尝试使用这些方法来完成工作(不确定这是否是最好的方法 - 我没有删除 autopublish )。但现在它不起作用。我的组件是:

在我的幻想中,在 ngOnInit 中调用的 getInvitation() 应该订阅“邀请”集合,并且 autorun() 应该检查是否找到了文档,如果找到了应该改变路由。但我没有收到错误,路线也没有改变。哪一个应该是响应性地更改路由以响应集合更改的正确方法?

0 投票
1 回答
79 浏览

meteor - 在 angular2-meteor 应用程序中安装 gulp

提前致谢。我正在制作一个Angular2-meteor应用程序。在应用程序中,我想在Angular2-meteor中使用Gulp来缩小和编译打字稿代码,但我无法安装 gulp。你能帮我吗,谢谢。

0 投票
2 回答
117 浏览

meteor - 使用组件输入更新模板

前言:我是 Meteor、Angular 和 Typescript 的新手,所以这里很可能会出现 XY 问题。

我正在使用 Meteor 和 Angular 2(使用angular2-meteor包)开发一个简单的项目管理应用程序,其中结构(目前)由具有事件的项目组成。一种视图是项目列表。单击项目会显示项目详细信息的模式,包括项目事件列表。因此,三个组件:ProjectListProjectDetailsProjectEventsListProjectDetails使用Session变量来知道要显示哪个项目,并且有效。但是,模式中的事件列表在为单击的第一个项目创建后不会更新。

项目事件列表.ts

据我了解(尽管我可能会离开这里),我很难autorun自动运行。我试过放一个getter和setter,projectId当我点击一个项目时它会更新,但里面的代码在autorun第一次点击后不会运行。我尝试过的事情:

  • subscribe()切换和的嵌套autorun()
  • 添加/删除 autobind 参数到subscribe()autorun()。我真的不明白那应该做什么。
  • 将订阅代码移动到 setter 上projectId

    当我这样做时,列表停止显示任何项目。

如果这一切看起来应该可行,我将创建一个小测试用例来发布,但我希望这里的某些内容对于那些知道的人来说显然是错误的。谢谢!

0 投票
1 回答
41 浏览

meteor - Meteor 方法是如何执行的?

按照这个http://www.angular-meteor.com/tutorials/socially/angular2/meteor-methods

有:

然后在 Party-Detail.ts 我们有

当用户点击 Invite 时代码是如何执行的?

同时在客户端和服务器端?

0 投票
2 回答
227 浏览

meteor - 在angular2-meteor项目中的两个组件之间传递值

我正在使用 angular2-meteor。

当我尝试在两个组件之间传递一个值时(当第一个组件中的值发生变化时,在第二个组件中创建一个事件并使用这个新值),我现在有两种方法:

  1. 一种方式是流星方式:使用this.autorunand Session.get
  2. 另一种方式是 angular2 方式:使用Injectableservice with EventEmitter.

应该先走哪条路?或者有没有其他更好的方法?谢谢

0 投票
1 回答
79 浏览

meteor - 当我从集合中删除文档时,并非所有客户的视图都会更新。为什么?

我正在使用Angular2-meteor,它正在使用 Angular2 Beta 1(截至目前)。

我有一个简单的组件,其中包含:

  • 添加文档的按钮。显示的新文档带有一个按钮,可通过其 _id 将其删除。
  • 还有一个“全部删除”按钮,它循环通过 collection.find() 删除每个文档的 _id。

它大部分工作正常。您可以使用各自的删除按钮添加和删除文档。当您“全部删除”时,它会将它们全部从数据库中删除。游标报告 count() 为 0。新的 collection.find().count() 报告为 0。但它只删除了由客户端上的 *ngFor 显示在模板上的第一个removeAll()文档。其他文档仍显示在浏览器中。当您重新加载页面时,它会显示数据库的正确内容。其他连接的客户端始终显示正确的集合内容。只有启动的客户端removeAll()会受到影响。

模板、“全部删除”按钮和 *ngFor 显示文档

组件:

0 投票
2 回答
836 浏览

meteor - Angular2 中的 *ngIf 服务不能很好地工作

编辑:嗯,我应该更清楚。这是一个 angular2-meteor 项目。因为流星是反应性的,所以可能有其他方式。但是@lodewijk-bogaards 是纯 Angular2 项目的一个很好的解决方案。

我正在使用 Angular 2(TypeScript)。

我尝试使用ChatService服务将值“12345”从 传递AppChatDetailsComponent.

如果布尔showChatDetails值为真,那么当我第一次单击“显示”按钮时,它将显示“12345”,效果很好。

问题是,如果布尔值showChatDetails是假的,它会在我第二次单击“显示”按钮后显示“12345”。我不知道为什么我第二次点击它时它会起作用,这也应该是第一次。

(请不要切换到 [hidden],因为我这里需要 *ngIf。)

// 应用程序.ts

// 聊天详细信息.component.ts

// 聊天服务.ts

0 投票
1 回答
885 浏览

meteor - 如何在 angular2-meteor 项目中使用 RxJS?

我有一个 angular2-meteor 项目。

我尝试使用 RxJS,所以我在我的代码中添加了这些:

但是当我运行它时,它显示:

找不到模块“rxjs/Observable”。

我需要从Atmosphere安装任何软件包吗?

0 投票
1 回答
447 浏览

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 日志,没有任何问题的迹象。我的部分问题是我看不到什么te是什么,因为有人(Heroku?)正在丑化 JavaScript。我不确定如何进行调试。

解决此问题的一种方法是找出并修复错误,但如果有更好的构建包,或者甚至更好(必须免费!)我可以使用的托管环境,我会很高兴。

编辑

这不是 Heroku 的问题。部署到 Meteor 的内置部署测试 ( meteor deploy site.meteor.com) 时也会发生同样的事情。meteor deploy --debug site.meteor.com但是,如果我使用.