小编Don*_*ana的帖子

为什么Angular中的ngOnInit不是私有的?

我正在检查代码示例,甚至文档都没有得到任何信息.然后,我谷歌一段时间,仍然没有.

我们为什么打字

ngOnInit() { ... }
Run Code Online (Sandbox Code Playgroud)

代替

private ngOnInit() { ... }
Run Code Online (Sandbox Code Playgroud)

或者,就此而言,只要我抱怨这个话题

private ngOnInit() : void { ... }
Run Code Online (Sandbox Code Playgroud)

拥抱TypeScript的全部力量?

编辑

根据评论我需要扩展问题.我们为什么不写:

public ngOnInit() : void { ... }
Run Code Online (Sandbox Code Playgroud)

代替?

typescript angular

4
推荐指数
2
解决办法
1572
查看次数

当以编程方式路由回页面时,Angular不会调用ngOnInit

我已经实现了以下控制台输出,以跟踪执行的内容和不执行的内容./ dataList下的页面代码.

export class DataList implements OnInit {

  constructor(private service: DataService) { 
    console.log("constructed");
  }

  ngOnInit() {
    console.log("inited");
    ...
  }

}
Run Code Online (Sandbox Code Playgroud)

现在,它通过输入URL以及使用来自另一个页面的路由访问页面时在控制台中提供输出(即构造引入)两者的工作原理,如下所示.

this.router.navigateByUrl("/dataList");
Run Code Online (Sandbox Code Playgroud)

但是,当我从此页面导航到详细页面(使用/ dataElement/12345之类的URL ,其中12345是ID)时,它不显示已启动(仅构造),然后返回到执行导航的页面/ dataList通过上面显示的URL.(如果我然后点击F5,我会看到构造inited,但是.)

我认为甚至不可能进入构造函数而不进入ngOnInit,给定实现的接口,但显然,我错了(并且也非常困惑).

我可以做的最好的诊断是,当从子路径路径导航时,不会调用初始化.但它对我来说似乎很奇怪,所以我怀疑我没有正确诊断它.谷歌搜索没有产生任何我认为充分相关的东西(像这样或者这样).路由就像这样.

const routes: Routes = [
  { path: "", component: StartComponent },
  { path: "dataList", component: DataListComponent },
  { path: "dataElement/:id", component: DataElementComponent …
Run Code Online (Sandbox Code Playgroud)

routing typescript angular

4
推荐指数
1
解决办法
1289
查看次数

为什么我必须使用“npm start x”启动某些脚本,而仅使用“npm x”启动其他脚本?

在我的package.json中,我有以下部分用于脚本定义。

"scripts": {
 "ng": "ng",
 "start": "ng serve",
 "build": "ng build --prod",
 "test": "ng test",
 "lint": "ng lint",
 "e2e": "ng e2e"
}, ...
Run Code Online (Sandbox Code Playgroud)

每当我想运行该应用程序时,我都会执行npm start(它执行ngserve)。我也可以 go npm run start达到相同的结果。现在,当我尝试构建我的应用程序时,我进行了npm build,但与我的预期相反,没有执行任何构建(没有错误,也没有,执行完成时没有任何输出到控制台)。我必须改为npm run build(当然,它执行了ng build --prod )。

我不明白其中的差异。

node.js npm angular

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

无法在 PowerShell 中将curl 转换为 Invoke-WebRequest(--insecure/-k 未找到)

我有原始的curl调用,据说它在Unix 环境中工作(或者他们在提供商办公室使用的任何环境)。

curl 
  -u ybeepbeepbeepa:eboopboopboopa
  -k 
  -d "grant_type=mobile&customerId=SE.B2C/abcd&pin=1234&scope=openid" 
  -H "Content-Type:application/x-www-form-urlencoded" 
  https://xxx/oauth2/token
Run Code Online (Sandbox Code Playgroud)

使用curl 的文档,我将标志和属性交换为以下内容。

Invoke-WebRequest 
  -User ybeepbeepbeepa:eboopboopboopa 
  -Method POST 
  -Headers @{"Content-Type"="application/x-www-form-urlencoded"} 
  -Uri "https://xxx/oauth2/token?grant_type=mobile&customerId=SE.B2C/abcd&pin=1234&scope=openid" 
Run Code Online (Sandbox Code Playgroud)

我唯一未能翻译的部分是-k,它应该相当于--insecure。检查上述文档,我找到了一些可能的替代方案,尽管有些牵强(例如-AllowUnencryptedAuthentication),但它们都失败了,我没有想法。

  1. PowerShell 的Invoke-WebRequest中的curl 的--insecure(或-k )的等价物是什么(它意外地被添加到curl,由于标志不同,这就像鸭子一样令人困惑)?
  2. 命令的其余部分是否已正确移植到 PowerShell?(我已经签订了一些标志并将它们与 URL 一起烘焙为查询字符串。而且我不完全确定Headers的语法。)

powershell curl

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

是否需要在.NET Core 2.0和EF下使用IdentityDbContext进行JWT身份验证?

我正在玩.NET Core下的登录程序,我注意到当我按照指南使用时IdentityDbContext,IdentityUser我会在数据库中自动获得一堆表(例如AspNetUsers,AspNetUserClaims等).

虽然很好,但我想知道使用不那么神奇的东西DbContext并为用户和角色管理创建自己的架构是非常错误的.我更喜欢"杀死自己的食物",以便了解安全性如何工作,我不喜欢使用我不理解的螺栓和螺母的工具和框架.("它就像那样工作",当它停止工作时经常导致问题.)

身份的一部分IdentityDbContext,IdentityUser等等只是一个方便啄或者是那些应该被使用?

我将定位的技术堆栈是.NET Core 2.0和JWT身份验证.当然,该模型应该由EF在DB中管理.

如果问题是愚蠢的,请原谅.我是安全人员的新手,可能正在咆哮错误的树.

c# entity-framework jwt .net-core asp.net-core-2.0

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

如何将已安装的Bulma包中的SASS合并到Angular应用程序中?

我试图在我的项目中引入Bulma.根据文档,推荐的方法是使用NPM获取它.

纱线加毛

进一步向下的文档,它们显示出与下面的代码线的一例.

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.6.2/css/bulma.min.css">
<script defer src="https://use.fontawesome.com/releases/v5.0.6/js/all.js"></script>
Run Code Online (Sandbox Code Playgroud)

据我所知,如果我们CDN它是NPM包的多余(反过来,如果我们NPM它,CDN是不必要的).在这种特殊情况下,用户可能会遇到一堆棘手的防火墙等等,因此无论如何都可能无法应用CDN.我将不得不依赖自己分发的软件包.但是,当我删除上面的行时,样式消失了,因为Bulma的页面上没有关于如何处理它的信息,我不完全确定如何继续.

node_modules中,有一个文件bulma.sass以及一组目录,其中包含用于构建大屁股文件的各个asses.我想在我的项目中使它可用.当我用谷歌搜索时,我已经看到了一系列不同的建议:从简单地将文件复制到我的src到关于应用Grunt脚本的冗长而复杂的讨论.不知何故,我觉得有一种直截了当的方式(可能是我见过的那种方式),但是我太困惑了,无法识别它.

如何将已安装的包(驻留在node_modules中)中的样式转换为我的Angular应用程序的src和/或dist文件夹?

奖金问题是我在使用Bumla时应该如何处理FontAwesome链接(除非它与其他框架设置的方式相同,在这种情况下,我可以自己谷歌或提出另一个问题.)

css sass npm angular

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

如何生成包含 JSON 结构的下载文件?

我的控制器中有这个方法。

public IActionResult Download()
{
  return Json(_context.Users);
}
Run Code Online (Sandbox Code Playgroud)

我注意到它生成了正确的 JSON 结构,但它在浏览器中呈现为通用文本。我希望将其下载到客户的计算机上。我怎么做?

我不确定是否应该使我的对象以某种方式进行流式传输或者在我的硬盘驱动器上创建一个文件并像这样提供它。

我找不到任何让我印象深刻的东西,就像我们在 C# 中所习惯的那样直接、简单。所以我担心我在这里遗漏了一个概念。

c# file download asp.net-core-2.2

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

网格项目不遵守网格模板区域中的点符号

根据CSS Tricks for grid-template-areas的介绍,如果我为列指定点,则不会占用空间。

根据我的小提琴,它将C替换为点。

div.outer {
  display: grid;
  grid-template-columns: 40% 30% 10% 20%;
  grid-template-rows: 50% 50%;
  grid-template-areas: "text text . button" "check span . button";
}

div.outer > div.texty { grid-area: text; }

div.outer > div.checky { grid-area: check; }

div.outer > span { grid-area: span; }

div.outer > div.butty { grid-area: button; }
Run Code Online (Sandbox Code Playgroud)
<div class="outer">
  <div class="texty">A</div>
  <div class="checky">B</div>
  <span class="showy">C</span>
  <div class="butty">D</div>
</div>
Run Code Online (Sandbox Code Playgroud)

css css-grid

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

为什么Angular文档建议在模块和组件级别上导入?

反应形式文档中,建议我将以下行添加到我的app.module.ts中.

import { ReactiveFormsModule } from '@angular/forms';
...
@NgModule({ imports: [ ReactiveFormsModule, ... ], ... })
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)

然后,在后面的部分中,建议还在我的actual.component.ts中添加以下内容.

import { FormControl, FormGroup } from '@angular/forms';
Run Code Online (Sandbox Code Playgroud)

我试图跳过模块部分,只导入组件中的东西,这似乎有效,据我所知.对我来说似乎是合理的,如果我做相反的事情并添加了模块部分,我就不必导入该模块的组件.这是模块部件和组件部分的组合让我感到困惑.

我不明白这两个操作的目的在一起.他们为什么这样做?

javascript import module typescript angular

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

较长的文本不会显示省略号(三个点)

我已经设置了如下所示的样式。

div>span {
  display: flex;
  flex: 1 0 0;
  align-self: center;
  align-items: center;
  justify-content: flex-end;

  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,省略的三人组似乎只实现了隐藏现在的隐藏,而不是省略。经过一些研究,我知道它与计算的可用宽度有关,但我看不出它对我有什么帮助。

显然,宽度已经超出了(因为溢出的部分被切掉了)。我得到的最接近工作示例是当我关闭设置为弯曲的显示器时。对于块它可以工作,但对于柔性则不行。

我真的很想使用 Flex,因为它解决了很多其他问题。如何调整示例,使其保留显示的灵活性并仍然省略文本?

html css flexbox

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

无法在Angular中提供从IE下载的文件

我正在尝试为我的用户生成一个文本文件,下面的代码在IE和Edge之外的所有浏览器中完美地完成了工作(在后者中,我无法控制文件的名称,但至少它已经生成).

emitFile(stage: any): void {
  const blob = new Blob([stage.elaboration], { type: "text/csv" });
  const url = window.URL.createObjectURL(blob);
  const anchor = document.createElement("a");
  anchor.href = url;
  anchor.download = "ff-rocks-ie-sucks.txt";
  anchor.click();
}
Run Code Online (Sandbox Code Playgroud)

在这方面有一张公开的发行票,但它的日期是18个月前,最近的活动相当不紧急.似乎这是一个希望夭折的地方.

我还没有找到任何合理的解决方法.我见过的那些人要么不工作,要么包含一个(非常明智但不可行)的建议,为了鸭子的缘故得到体面的浏览器.而且我认为这更像是一个错字而不是鸟类参考.

该怎么办呢?

internet-explorer file download typescript angular

0
推荐指数
1
解决办法
3169
查看次数