我已经socket.io-client
安装在 Angular 5.2 应用程序中,在按照连接步骤(以前对我有用过很多次)之后,我收到了一个奇怪的错误。
TypeError: socket_io_client_1.default is not a function
at new AuthService (auth.service.ts:15)
at _createClass (core.js:10891)
at _createProviderInstance$1 (core.js:10865)
at resolveNgModuleDep (core.js:10850)
at NgModuleRef_.get (core.js:12087)
at resolveDep (core.js:12577)
at createClass (core.js:12439)
at createDirectiveInstance (core.js:12284)
at createViewNodes (core.js:13742)
at callViewAction (core.js:14176)
Run Code Online (Sandbox Code Playgroud)
这是第 15 行 AuthService
import {Injectable} from '@angular/core';
import io from 'socket.io-client';
import {CookieService} from 'ngx-cookie-service';
@Injectable()
export class AuthService {
socket;
domain = 'http://localhost:3000';
isUserLoggedIn = false;
cookie_key = '';
user = {};
constructor(private cookieService: CookieService) …
Run Code Online (Sandbox Code Playgroud) 我有一个定期运行的函数,它更新了我的Collection中item.price
的一些函数.将有10万个+项目.该函数如下所示:Documents
Prices
Price Collection
//Just a helper function for multiple GET requests with request.
let _request = (urls, cb) => {
let results = {}, i = urls.length, c = 0;
handler = (err, response, body) => {
let url = response.request.uri.href;
results[url] = { err, response, body };
if (++c === urls.length) {
cb(results);
}
};
while (i--) {
request(urls[i], handler);
}
};
// function to update the prices in our Prices collection.
const update = …
Run Code Online (Sandbox Code Playgroud) 我有一个功能可以在前端获取机器人的清单
getBotInventory() {
this.socket.emit('get bot inv');
this.socket.on('bot inv', (botInventory) => {
return new Promise((resolve, reject) => {
if (botInventory.error) {
return reject(botInventory.error);
}
this.botInventory = botInventory;
resolve(botInventory);
});
});
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它返回一个Promise。
当我尝试调用它时
getBotInventory() {
this.userService.getBotInventory().then(botInv..)
}
Run Code Online (Sandbox Code Playgroud)
我越来越
错误TS2339:类型'void'上不存在属性'then'。
显然,它返回一个Promise
。谁能指出问题出在哪里?
我想将我的内容水平放在Bulma的列中.
这是一个例子:
我想把这些'class="column is-2"'
放在columns
'div中.
这是我的代码如何开始:
<div class="columns is-vcentered">
<div class="column is-three-fifths is-offset-one-fifth has-text-centered">
<div class="columns is-desktop is-vcentered">
<div class="column is-2">
<button mat-raised-button color="primary" (click)="initTimer()">
<mat-icon>play_arrow</mat-icon>
Start Timer
</button>
</div>
Run Code Online (Sandbox Code Playgroud)
我想把里面的按钮置于-2的中心位置.
任何帮助,将不胜感激.谢谢!
我有一个循环,生成让我们说20个div.每个div都是来自我的本地对象数组的对象.这是代码:
<div *ngFor="let item of userInventory"
class="col-2 c-pointer"
(click)="addItemToArray(item)">
<img src="{{item.image}}" class="img-fluid"/>
<span class="d-block">{{item.name}}</span>
</div>
Run Code Online (Sandbox Code Playgroud)
当用户点击div(项目)时,它会将项目添加到数组中:
addItemToArray(item) {
this.itemsToSend.push(item);
item.isAdded = true;
}
Run Code Online (Sandbox Code Playgroud)
在任何情况下都不允许用户在数组中添加相同的项目两次,但我不想改变userInventory
数组(或splice()
它).我希望它仍然可见,只需更改它上面的一些样式,使它看起来禁用.另外如您所见,当单击该项目时,item.isAdded
变为true
.
我想要做的是,什么时候item.isAdded
是真的,禁用div上的(click)事件监听器(并添加一些样式),这样用户就不能多次添加相同的项目,尽管多次点击它.
这在当前的Angular实现中是否可行?
我现在的 WebAPI 代码非常模块化。但我希望它更多。
我有一个包含所有路由的 server.js 文件,我想将它们拆分为单独的控制器。关于如何做到这一点的任何想法?下面是一个例子:
app.get('/users/me', authenticate, (req, res) => {
res.send(req.user);
});
Run Code Online (Sandbox Code Playgroud)
我的 server.js 文件中有一堆这样的路由。我将如何使用我的用户路由创建一个 user-routes.js 文件?同样对于我设置的所有其他集合的路线。
app.post('/firm', authenticate, (req, res) => {
var firm = new Firm({
name: req.body.name,
number: req.body.number,
_creator: req.user._id
});
Firm.findOne({
number: req.body.number,
_creator: req.user._id
}).then(firmFound => {
if (firmFound) {
return res.status(400).send({
message: 'Firm with that name or number already exists.'
})
}
firm.save().then((firm) => {
res.send(firm);
}, (e) => {
res.status(400).send(e);
});
});
});
Run Code Online (Sandbox Code Playgroud)