小编Chr*_*ore的帖子

如何使用angular 2路由器重新加载当前路由

我正在使用带有哈希定位策略的角度2.

该组件加载了该路由:

"departments/:id/employees"
Run Code Online (Sandbox Code Playgroud)

到目前为止很好.

在我成功批量保存多个已编辑的表行后,我想通过以下方式重新加载当前路由URL:

this.router.navigate([`departments/${this.id}/employees`]);
Run Code Online (Sandbox Code Playgroud)

但没有任何反应,为什么?

angular

103
推荐指数
13
解决办法
20万
查看次数

如何将JavaScript文件导入angular2

我无法弄清楚如何将javascript文件导入我的angular2项目.这是一个不是npm的模块的文件,我能找到的唯一指令是使用npm,这不是一个选项.

我使用的是角度cli,在我的angular-cli.json文件中,我有:

{
"apps": [
  "styles": [..],
  "scripts": ["../pathtomyjs/file.js"] 
]}
Run Code Online (Sandbox Code Playgroud)

我运行构建和ng服务,当我打开我的应用程序并查看Web控制台并尝试引用我的js文件中的函数时,我能够成功完成.

我键入的控制台中的示例:

var test = MyObject; 
Run Code Online (Sandbox Code Playgroud)

我得到test = {};

但是,当我尝试做的时候

let test = MyObject;
Run Code Online (Sandbox Code Playgroud)

在我的组件.ts文件中,我得到:

home.component.ts (10,11): Cannot find name 'MyObject'.)
Run Code Online (Sandbox Code Playgroud)

不知道如何在Angular2中这样做.

谢谢!

javascript typescript typescript-typings angular

11
推荐指数
1
解决办法
3万
查看次数

如何根据不同的属性对 React 组件列表进行排序?

所以,这是我前端的代码片段。

{store.results.data.map( result =>
  <ResultItem 
    key={result.id}
    title={result.title}
    description={result.description}
    start_date={result.start_date}
    end_date={result.end_date}
    vendor_name={result.vendor.name}
    buyer_name={result.buyer.name}
    preview_file={result.preview_file}
    status={result.status}
  />
)}
Run Code Online (Sandbox Code Playgroud)

基本上,我将 Redux 存储中的所有数据映射到 ResultItems。我希望能够ResultItems按不同的属性对我的所有内容进行排序,例如title, description, start_date, end_date, vendor_name, 和buyer_name

关于如何做到这一点的任何想法?

reactjs redux

11
推荐指数
2
解决办法
3万
查看次数

JavaScript:IF时间> = 9:30然后

我正试图写一个声明,说"如果时间是这个,那么就是那个".我可以使用get hours并获得分钟.但是,我在结合9:30这样的时间时遇到了问题.

例,

var now = new Date();
var hour = now.getHours();
var day = now.getDay();
var mintues = now.getMinutes();

if (day == 0 && hour >= 9 && hour <= 11 && mintues >= 30) { 
    document.write(now); 
}
Run Code Online (Sandbox Code Playgroud)

这只有当时间在9:30之间时间为10时.一旦时钟到达10,则分钟<30并且脚本中断.

关于如何更好地融入时间函数以使这一理论发挥作用的任何想法?

谢谢,

javascript

8
推荐指数
2
解决办法
2万
查看次数

如何使用 jest 测试传递给 document.body.appendChild 的 args

我有一个创建脚本元素并将其添加到正文的函数。它看起来有点像这样:

const s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'https://myscript';
s.id = 'abc';

document.body.appendChild(s);
Run Code Online (Sandbox Code Playgroud)

我正在使用 jest 进行测试,并监视该appendChild函数以断言传入的参数是我所期望的。我有什么看起来像这样:

jest.spyOn(document.body, 'appendChild');

doFunction();

expect(document.body.appendChild).toBeCalledWith(
  '<script id="abc" src="https://myscript" type="text/javascript" />',
);
Run Code Online (Sandbox Code Playgroud)

尽管字符串匹配,但传入的参数appendChild不是字符串,而是对象。

typeof document.body.appendChild.mock.child[0][0] // object
Run Code Online (Sandbox Code Playgroud)

我也试过对一个对象进行断言({ type: '...' }运气不好。还有什么其他选项可以用来测试这段代码?

javascript jestjs

8
推荐指数
1
解决办法
3208
查看次数

5
推荐指数
3
解决办法
2万
查看次数

使用静态对象数组迭代 *ngFor 会不断更新 DOM

我有一个简单的组件,它遍历静态对象数组并显示内容。将此组件添加到较大的应用程序中时,内容显示正确,但我无法在其上注册任何点击事件。当我使用 chrome 检查元素时,right click -> Inspect我看到了 body 标签,但它没有按预期深入到单个元素。

通过手动导航,检查元素表明组件不断被 DOM 更新(div 标记闪烁)。根据我的理解,不应该检测到任何变化,因为它是一个静态数组。

将对象数组更改为简单的字符串数组['a', 'b', 'c']会按预期运行,并且不会更新 DOM。

在 ngFor 之外的模板添加其他元素不受影响,也不会不断更新。

我正在使用 v2.4.1

简化组件

import { Component } from '@angular/core';

@Component({
	selector: 'app-ngfor-test',
	templateUrl: './ngfor-test.component.html',
	styleUrls: ['./ngfor-test.component.css']
})
export class NgforTestComponent {
	
	get items() {
		return [
			{
				'label': 'a',
				'value': 'first'
			},
			{
				'label': 'b',
				'value': 'second'
			},
			{
				'label': 'c',
				'value': 'third'
			}
		];
	}
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

模板

<div class="item-container" *ngFor="let item of items">
	<label>{{ …
Run Code Online (Sandbox Code Playgroud)

typescript angular

5
推荐指数
1
解决办法
3260
查看次数

使用求值表达式的ngClass会删除常见类

当我使用带有公共类的多个表达式的ngClass c1时,当表达式从false变为true时,将删除公共类:

<span [ngClass]="{'c1 c2' : showTwo, 'c1 c3' : showThree, 'c1 c4' : showFour}" ></span>
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我必须使用标准class属性指定公共类.

<span class="c1" [ngClass]="{'c2' : showTwo, 'c3' : showThree, 'c4' : showFour}" ></span>
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?或者它是Angular2的错误?

angular

5
推荐指数
1
解决办法
619
查看次数

角度性能跟踪

跟踪Angular应用程序性能的最佳和推荐方法是什么?我可以使用许多其他可用的技术/ api,如performance.now来跟踪和谷歌分析/应用程序洞察力,以发送自定义性能计数器.

但我的问题是,为此目的,我们在Angular中内置了一些内容,还是推荐了第三方模块/库来帮助跟踪角度应用程序的性能?

performancecounter page-load-time angular

5
推荐指数
0
解决办法
297
查看次数

仅使用JavaScript单击按钮即可增加字体大小

我试图通过单击按钮来增加字体大小。我有第一个工作的人,但我无法绕过第二个工作。第二个,每次单击将使字体增加1px(我非常困惑):

<input type="button" value="Increase Font Size 100px" onclick="increaseFontSizeBy100px()">
<p id="a">Font Size</p>

<input type="button" value="Increase Font Size 1px" onclick="increaseFontSizeBy1px()">
<p id="b">Font Size by 1 Pixel</p>

<script> 
    function increaseFontSizeBy100px() {
        document.getElementById('a').style.fontSize = "100px";
    }

    function increaseFontSizeBy1px() {
        var font = document.getElementById('b').style.fontSize;            
        font++;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

javascript button font-size

3
推荐指数
1
解决办法
2万
查看次数