在HTML中将参数传递给Angular时,如何引用JavaScript包?
我想让下面的内容更像是专横在HTML中将参数传递给Angular时,如何引用JavaScript包?,javascript,html,angular,typescript,Javascript,Html,Angular,Typescript,我想让下面的内容更像是专横 <div (click)="lastCall(999)">click me</div> 我必须像这样在我的TS文件中声明一个属性 private max: number = Number.MAX_SAFE_INTEGER; <div (click)="lastCall(max)">click me</div> 然后像这样引用它 private max: number = Number.MAX_SAFE_INTEGE
<div (click)="lastCall(999)">click me</div>
我必须像这样在我的TS文件中声明一个属性
private max: number = Number.MAX_SAFE_INTEGER;
<div (click)="lastCall(max)">click me</div>
然后像这样引用它
private max: number = Number.MAX_SAFE_INTEGER;
<div (click)="lastCall(max)">click me</div>
点击我
是否有方法传递
Number.MAX\u SAFE\u整数代码>直接在通话中?如何实现?通过将其声明为可注入常量来实现
@Injectable()
export class Numbers{
public MAX_SAFE_INTEGER = 9999
}
将其注入组件构造函数
constructor(private Number:Numbers){}
然后在html中使用它作为
<div (click)="lastCall(Number.MAX_SAFE_INTEGER)">click me</div>
点击我
您必须编写的原因
export class MyComponent {
max = Number.MAX_SAFE_INTEGER; // type inference FTW
}
虽然模板在逻辑上是组件的一部分,但它不能访问与组件类相同的词汇环境。之所以MyComponent
可以访问它,是因为MyComponent
是普通的旧JavaScript代码
模板存在于不同的环境中
如果使用一个不涉及全局变量的示例,这一点会更清楚
考虑
类别:
import {π} from 'app/constants';
export class MyComponent {
updateArea(radius: number) {
this.area = π * radius ** 2;
}
area?: number;
}
模板:
<input #radius type="number">
<button (click)="updateArea(radius.value)">
<span>{{area}}</span>
π
永远不会改变。把它投入服务是胡说八道
对于这样的用例,我认为您的“变通方法”(如上面最后一个示例中重复的)实际上是正确的方法。这是最平滑的方法吗?我的变通工作在代码隐藏中创建了一行额外的代码。您建议的方法创建了一个新文件、一个新类和一个额外的注入。我不会以任何方式质疑你的意见。只是好奇这是否是正确的(最)方法。是的。这就是应该使用硬编码值的方式。假设在接下来的几天内,最大值将被修改为9999
,您会在所有文件中进行更改吗?当您在编写单元测试时需要模拟最大安全整数时,这将非常方便。一个健壮的解决方案。@AluanHaddad噢,更改每个文件中的值不是首选的解决方案(也不是我想要的解决方案,尽管从实用角度来说,在文件中查找应该可以做到)。我对您建议的解决方案的问题在于,Number.MAX\u SAFE\u INTEGER
已经有了很好的定义,因此似乎没有必要重新定义它。“你觉得怎么样?”阿鲁安哈达德说,“哦,当然没有人知道。最有可能是因为我像黑洞一样稠密(过去几天睡眠不足+对愚蠢的电脑没有做我想做的事感到沮丧,呵呵)。除此之外,我喜欢讽刺,但我不确定这是否可能是一种方式。现在,有人说-你如何得到数字.MAX_SAFE_INTEGER
的真正恒常性?