我正在使用带有哈希定位策略的角度2.
该组件加载了该路由:
"departments/:id/employees"
Run Code Online (Sandbox Code Playgroud)
到目前为止很好.
在我成功批量保存多个已编辑的表行后,我想通过以下方式重新加载当前路由URL:
this.router.navigate([`departments/${this.id}/employees`]);
Run Code Online (Sandbox Code Playgroud)
但没有任何反应,为什么?
我无法弄清楚如何将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中这样做.
谢谢!
所以,这是我前端的代码片段。
{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
。
关于如何做到这一点的任何想法?
我正试图写一个声明,说"如果时间是这个,那么就是那个".我可以使用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并且脚本中断.
关于如何更好地融入时间函数以使这一理论发挥作用的任何想法?
谢谢,
我有一个创建脚本元素并将其添加到正文的函数。它看起来有点像这样:
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 ,我想从这个脚本返回一个值.
我有一个简单的组件,它遍历静态对象数组并显示内容。将此组件添加到较大的应用程序中时,内容显示正确,但我无法在其上注册任何点击事件。当我使用 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)当我使用带有公共类的多个表达式的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应用程序性能的最佳和推荐方法是什么?我可以使用许多其他可用的技术/ api,如performance.now来跟踪和谷歌分析/应用程序洞察力,以发送自定义性能计数器.
但我的问题是,为此目的,我们在Angular中内置了一些内容,还是推荐了第三方模块/库来帮助跟踪角度应用程序的性能?
我试图通过单击按钮来增加字体大小。我有第一个工作的人,但我无法绕过第二个工作。第二个,每次单击将使字体增加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) angular ×5
javascript ×5
typescript ×2
button ×1
font-size ×1
jestjs ×1
reactjs ×1
redux ×1
selenium ×1