我正在尝试在对话框中完全按照文档中的描述实现基本日期选择器,但它没有正确显示日历图标。它是这样的:
以下是该对话框的 html 模板代码:
<div class="dialog-header">
<button mat-icon-button tabindex="-1" (click)="cancel()">
<mat-icon>close</mat-icon>
</button>
</div>
<div mat-dialog-content>
<mat-form-field appearance="fill">
<mat-label>Choose a date</mat-label>
<input matInput [matDatepicker]="picker" />
<mat-hint>MM/DD/YYYY</mat-hint>
<mat-datepicker-toggle matIconSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
</div>
Run Code Online (Sandbox Code Playgroud)
这是CSS代码:
:host {
display: flex;
flex-direction: column;
height: 100%;
}
.dialog-header {
display: flex;
flex-direction: row;
margin: -10px -10px 10px;
& > h1 {
margin: auto 0;
}
& > .mat-icon-button {
margin-left: auto;
margin-bottom: auto;
}
}
.mat-dialog-content {
width: 100%;
display: flex;
max-height: unset;
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除所有容器组件的几乎所有 …
我在基于 Angular 12 的网站上向不同的 mat-buttons 添加了一些 CSS 属性。为了不意外地将这些属性应用于所有 mat-buttons,而仅应用于我想要应用它们的按钮,我向按钮添加了一个类,并使用它来设置 CSS 属性,如下所示:
组件html文件:
<a class="menu-button" mat-button>
<img class ="menu-button-image" src="assets/images/example.png">
<div>Example text</div>
</a>
Run Code Online (Sandbox Code Playgroud)
组件scss文件:
.menu-button {
width: 300px;
height: 300px;
display: flex;
flex-direction: column;
align-content: center;
justify-content: center;
font-size: 20px;
line-height: 1.5;
}
.menu-button-image {
width: 200px;
height: 200px;
}
Run Code Online (Sandbox Code Playgroud)
只要我将 css 代码保留在组件的 scss 文件中,就可以正常工作,但因为我不想在要应用这些属性的每个组件中都将其作为冗余代码,所以我将其移至样式中。取而代之的是.scss 文件。执行此操作后,仅应用部分属性,但有些属性似乎被覆盖/忽略:
为什么会发生这种情况以及如何防止这种情况发生?
在 SQL Server 数据库中,我有两个几乎相同的表TBL_1
和TBL_2
。以下是两个表的创建脚本:
TBL_1:
CREATE TABLE [dbo].[TBL_1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](100) NOT NULL,
[value_type_ID] [int] NOT NULL,
[description] [nvarchar](150) NOT NULL,
CONSTRAINT [PK_TBL_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TBL_1] ADD CONSTRAINT [DF__TBL_1__param__40F9A68C] DEFAULT ('-') FOR [name]
GO
ALTER TABLE [dbo].[TBL_1] ADD CONSTRAINT [DF_TBL_1_description] DEFAULT ('-') FOR [description]
GO
ALTER TABLE [dbo].[TBL_1] WITH CHECK …
Run Code Online (Sandbox Code Playgroud) 我开发了一个 PowerShell 脚本,它处理某些文件并通过 SFTP 传输它们。为此,只要需要凭据向 SFTP 服务器进行身份验证,它就会使用 SecureString 类型从加密文本文件中读取和解密 SFTP 用户凭据。这是必需的,因为我不允许将凭据作为纯文本存储在文件(或脚本本身)中,否则它将无法通过下一次安全审核。
除了脚本之外,还有一个单独的配置脚本,它必须运行一次以指定 sftp 用户凭据、加密它们并将它们保存到文本文件中。这是该配置脚本的(简化)代码:
Write-Output "Please enter the username of the SFTP user."
$username = Read-Host
Write-Output "Please enter the password of the SFTP user"
$password = Read-Host -AsSecureString
$username | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "$scriptroot\Credentials.dat"
$password | ConvertFrom-SecureString | Out-File -Append "$scriptroot\Credentials.dat"
Run Code Online (Sandbox Code Playgroud)
基本上这两个脚本工作得很好,并且做他们应该做的。但是,无论出于何种原因,一旦我注销然后再次登录到 Windows,解密就会停止工作。
我不明白为什么这会一遍又一遍地停止工作,我不知道该怎么办。有没有人知道一种方法来弄清楚为什么由于我退出系统而解密停止工作?该脚本甚至不在我自己的用户下运行,它作为在完全不同的 AD 用户下运行的计划任务执行。
我还读到 Microsoft 不再建议将 SecureString 用于新项目,但是可以使用的替代方法是什么?我还应该如何安全地将用户凭据存储在文件中,而无需将某种纯文本解密密钥存储在脚本或其他文件中?
在我的项目中,当用户更改另一个列表中的选定值时,我有时希望更新列表中的可用选项。为此,我使用了valueChanges
运算符pipe
,switchMap
如下所示:
this.form.controls.typeControl.valueChanges
.pipe(
switchMap((typeId: number) => {
return this.typesService.getProjectsByType(typeId);
}),
)
.subscribe((projects) => {
//...
});
Run Code Online (Sandbox Code Playgroud)
现在我遇到的问题是,我需要一次执行两个 http 请求来更新多个列表,而不是仅更新一个列表。当我尝试添加第二个时switchMap
,我得到error TS2345: Argument of type 'OperatorFunction<number, Project[]>' is not assignable to parameter of type 'OperatorFunction<any, number>'.
以下是我尝试执行此操作的方法:
this.form.controls.typeControl.valueChanges
.pipe(
switchMap((typeId: number) => {
return this.typesService.getProjectsByType(typeId);
}),
switchMap((typeId: number) => {
return this.typesService.getProgramsByType(typeId);
}),
)
.subscribe(([projects, programs]) => {
//...
});
Run Code Online (Sandbox Code Playgroud)
如何在此处添加第二个 http 请求,以便我可以处理 中两个请求收到的数据subscribe
?
我正在尝试按照本教程使用 Angular 前端设置 ASP.NET Core 应用程序。我已经能够成功创建项目,并且还能够完美地运行和调试它们。问题是,由于某种原因,我无法将后端调用代理到 ASP.NET Core 后端来工作。当我尝试从 Angular 应用程序调用控制器内的操作时,出现 404 错误。
这是我的 proxy.conf.js 文件:
const PROXY_CONFIG = [
{
context: [
"/api/*",
],
target: "https://localhost:7139",
secure: false
}
]
module.exports = PROXY_CONFIG;
Run Code Online (Sandbox Code Playgroud)
这是我TestController
为了测试目的而创建的:
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class TestController : ControllerBase
{
private readonly ILogger<TestController> _logger;
public TestController(ILogger<TestController> logger)
{
_logger = logger;
}
[HttpGet("{id}")]
public string Get(int id)
{
return "Test response";
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我尝试从 Angular 应用程序中调用它的方法:
this.http.get<string>(`api/test/1`).subscribe((value) => {
alert(value);
},
(error) => …
Run Code Online (Sandbox Code Playgroud) 我刚刚按照本教程中所述使用 Angular 创建了 ASP.NET Core 应用程序。\n创建 ASP.NET Core 项目时,我选中了启用 Windows 身份验证的选项。只要我添加[AllowAnonymous]
到 ASP.NET Core 项目中的控制器,一切就都工作得很好,但一旦我将其替换为[Authorize]
,来自 Angular 应用程序的请求就不再到达后端的代码。相反,网络服务器会返回400 Bad Request
错误。以下是一个包含发生此问题的响应标头的请求:\n
proxy.conf.json
经过我自己的一些研究,我发现我可能需要在后端启用 CORS,因为我在开发过程中在 Angular 应用程序中使用代理。以下是 的内容proxy.conf.json
:
{\n "/api/*": {\n "target": "https://localhost:7139",\n "secure": false,\n "changeOrigin": true\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n因此,我尝试添加到我的ASP.NET Core 项目UseCors()
中。Program.cs
这是Program.cs
当前的样子:
using Microsoft.AspNetCore.Authentication.Negotiate;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// Add services to the container.\n\nbuilder.Services.AddCors(setup =>\n{\n setup.AddDefaultPolicy(builder =>\n {\n builder.WithOrigins("http://localhost:4200")\n .AllowAnyHeader()\n .AllowAnyMethod()\n .AllowCredentials();\n });\n});\n\nbuilder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)\n .AddNegotiate();\n\nbuilder.Services.AddAuthorization(options =>\n{\n // By …
Run Code Online (Sandbox Code Playgroud) 我开发了一个基于 C# 的 Windows 服务,它在几个不同的任务中运行其所有逻辑。为了允许服务在停止时正常关闭,我使用 CancellationToken ,它被传递给任何接受一个的函数(主要来自我正在使用的第三方库),以便在完成之前中止处理。
我注意到,OperationCanceledException
当调用函数时请求取消时,这些函数都不会抛出异常,因此我的应用程序只是继续执行,直到我ThrowIfCancellationRequested()
稍后在代码中调用其他地方。我是否应该ThrowIfCancellationRequested()
在调用每个函数后手动调用以确保任务尽快停止,或者我到底应该何时调用ThrowIfCancellationRequested()
自己的代码?
c# multithreading synchronization cancellationtokensource cancellation-token
我一直在寻找一种解决方案,在 EF Core 中编写“通用”更新方法,该方法更新实体(包括相关集合)的所有已更改属性。原因是我将实体名称的翻译存储在不同的表中。我发现这个解决方案一开始似乎工作得很好,但后来我注意到当我在实体正在相关表中添加新的名称翻译TblProjectTranslations
。这是我的代码:
public async Task UpdateProjectAsync(TblProject updatedEntity)
{
TblProject dbEntity = Context.TblProjects
.Include(dbEntity => dbEntity.TblProjectTranslations)
.SingleOrDefault(dbEntity => dbEntity.ProjectId == updatedEntity.ProjectId);
if (dbEntity != null)
{
Context.Entry(dbEntity).CurrentValues.SetValues(updatedEntity);
foreach (TblProjectTranslation dbTranslation in dbEntity.TblProjectTranslations.ToList())
{
if (!updatedEntity.TblProjectTranslations
.Any(translation => translation.ProjectId == dbTranslation.ProjectId && translation.Language == dbTranslation.Language))
{
Context.TblProjectTranslations.Remove(dbTranslation);
}
}
foreach (TblProjectTranslation newTranslation in updatedEntity.TblProjectTranslations)
{
TblProjectTranslation dbTranslation = dbEntity.TblProjectTranslations
.SingleOrDefault(dbTranslation => dbTranslation.ProjectId == newTranslation.ProjectId && dbTranslation.Language == newTranslation.Language);
if (dbTranslation != null)
{
Context.Entry(dbTranslation).CurrentValues.SetValues(newTranslation);
}
else …
Run Code Online (Sandbox Code Playgroud) 我实现了一个类EUMemberChecker
,负责检查一个国家是否是欧盟成员。为了完成其工作,该类包含一个方法public bool IsEUMember(string country)
。用于检查一个国家是否是欧盟成员的数据存储在 PostgreSQL 数据库表中。
我想通过 DI 将此类添加为单例服务,从而使其可用AddSingleton
。原因是它应该只在应用程序启动时从数据库加载一次欧盟成员。如果我通过添加此类AddScoped
,则它的每个实例都需要从数据库加载自己的欧盟成员列表,在我看来,这将是相当大的开销。
我的问题是我无法将此类添加为单例,因为它使用我的DbContext
类作为范围服务添加。无论如何这样做,都会导致运行时错误Dependency ...DatabaseContext {ReturnDefault} as parameter "context" reuse CurrentScopeReuse {Lifespan=100} lifespan shorter than its parent's: singleton ... {ReturnDefault} as parameter ...
。
因此,似乎我必须将我的类添加为范围服务,从而导致额外的数据库调用来为该类的每个实例加载欧盟成员国。
我在这里是否错误地应用了单一职责原则,或者如何解决这个问题?如何确保欧盟成员不会无故多次从数据库加载?
c# singleton dependency-injection single-responsibility-principle asp.net-core
c# ×6
angular ×5
asp.net-core ×3
angular12 ×2
angular13 ×2
ef-core-6.0 ×2
angular-pipe ×1
asp.net ×1
credentials ×1
css ×1
html ×1
powershell ×1
rxjs ×1
sass ×1
securestring ×1
single-responsibility-principle ×1
singleton ×1
sql ×1
sql-server ×1
switchmap ×1