我有这个动态表单控件 我有这个动态表单控件 <form [formGroup]="dynamicFormGroup" (ngSubmit)="onSubmit()" > <div class="row" formArrayName="address" *ngFor="let fields of AddressInfo.controls; let i = index"> <ng-container [formGroupName]="i"> <input type="number" class="form-control height-reset" placeholder="Enter Mobile" name="mobile" formControlName="mobile" /> .. </form> 当我尝试更改字段的值时 this.dynamicFormGroup.controls['mobile'].setValue(''); 或 this.dynamicFormGroup.patchValue({ mobile: '444' }); 该值未更新 任何解决方案谢谢 我认为问题在于您在 formGroup 内的 FormArray 内使用 FormControl。 (只需查看简短的代码片段即可) 所以你的代码应该看起来像这样; this.dynamicFormGroup.controls[index].controls['mobile'].setValue(''); <ng-container [formGroupName]="i">也可能会破坏它。 我建议修改表格的结构,然后找到每个表格的正确“路径”。 就您而言,不清楚 AddressInfo 是什么。相反,将您的代码更改为: <div class="row" formArrayName="address" *ngFor="let fields of addressFormArray.controls; let i = index"> <ng-container [formGroupName]="i"> <input type="number" class="form-control height-reset" placeholder="Enter Mobile" name="mobile" formControlName="mobile"> </ng-container> </div> get addressFormArray() { return this.formMain.get('address') as FormArray; } 用户现在可以添加值。 如果您计划以编程方式编辑该值,则 this.dynamicFormGroup.controls['mobile'].setValue(''); 将不起作用,因为 mobile 是 FormArray 中的 FormControl。然后,要么循环遍历该数组以更改所有值,要么必须澄清应该更改哪个值。
linux下如何识别USB HUB(根)和连接到HUB(根设备)的设备(子设备)?
我想编写一个应用程序来从连接的USB集线器读取数据(iSerial信息)到linux以及将其他设备连接到该USB集线器。 -> 我想先检测USB Hub是否连接...
将 Spring Security 5 迁移到 Spring Security 6 HttpSecurity 问题
Spring Security 6 中以下代码应该替代什么? http .authorizeRequests() .requestMatchers("/hub/**").access("hasPermission('SOME_LAYER', '')")...
我有一个 Laravel 8 表单,其中包含一系列用户联系方式。 我有一个 Laravel 8 表单,其中包含一系列用户联系方式。 <div> <input name="contactdetails[{{ $key }}][email]" type="text"> <input name=" contactdetails [{{ $key }}][mobile]" type="text"> </div <div> <input name=" contactdetails [{{ $key }}][email]" type="text"> <input name=" contactdetails [{{ $key }}][mobile]" type="text"> </div <div> <input name=" contactdetails [{{ $key }}][email]" type="text"> <input name=" contactdetails [{{ $key }}][mobile]" type="text"> </div 我的验证规则如下所示: contactdetails.*.email=> ‘email:rfc,dns’, contactdetails.*. mobile => required_with:email|numeric', 我需要验证是否至少输入了一封电子邮件(但不是全部)以及相应的手机。 你必须这样做: 'contactdetails' => 'array|min:1', 'contactdetails.*.email' => 'email:rfc,dns', 'contactdetails.*.mobile' => 'required_with:contactdetails.*.email|numeric|nullable', 这意味着 contactdetails 必须是数组并且至少有一个成员 并更好地添加正则表达式移动角色来验证正确的手机号码
我即将使用谷歌搜索控制台API从Mobile-FriendlyTest获取数据 $request = new Request('POST', 'https://searchconsole.googleapis.com/v1/urlTestingTools/mobileFriendlyTest:run?key='.$
我使用AWS DataSync从本地到Amazon S3,如果我删除本地数据,它会同步到Amazon S3吗?
AWS DataSync 是否会将已在本地删除的文件同步到 Amazon S3,以便该文件从两个位置都消失/删除?如果是的话我可以关闭这个功能吗?如何? 我已阅读文档...
如何更改 Amazon AWS EC2 实例上的 virtualmin 默认 URL?
我刚刚在 Amazon EC2 实例上安装了 virtualmin,在安装结束时,它为我提供了一个访问 virtualmin 的链接:https://ip_address:10000 但是实例的 IP 地址是
如何让运行在 WSL2 上的节点服务器通过 LAN 转发,以便可以通过电话访问?
我尝试过以下方法: https://www.youtube.com/watch?v=yCK3easuYm4 https://medium.com/codemonday/access-wsl-localhost-from-lan-for-mobile-testing-8635697f008 https://superuser.com/questions/1679...
过去一周我一直在使用 Docker,并在 Dockerhub 上创建了一些新的存储库。在 Dockerhub 上创建存储库的数量有限制吗?
我正在尝试在 Linux 机器上进行 docker 登录。我正在使用 docker hub 用户名“undrewb”和用于登录 hub.docker.com 的密码。为什么这不起作用?我没有登录 GUI 和 docker
我正在尝试遵循本指南 https://aws.amazon.com/blogs/containers/using-alb-ingress-controller-with-amazon-eks-on-fargate/ 步骤如下: 集群配置 AWS_REGION=us-east-1 CLUSTER_NAME=...
我正在尝试使用 SoapUI 5.7.2 和 Groovy 脚本向 Amazon ActiveMQ 代理发布消息。计算机上安装了 Java 17。 下面是代码: 导入 org.apache.qpid.jms.JmsConnectionFactory;
背景不适用于视频隐藏式字幕::iOS Mobile 上的 Firefox 和 Safari 上的cue
我正在尝试通过 ::cue css 选择器在 HTML5 视频播放器上设置隐藏式字幕样式,如下所示。代码笔链接 ::提示{ 背景:rgba(255, 255, 255, 0.8); /*不适用于 iOS 移动版 Firefox、Safari...
如何在 ASP.NET MVC 中将参数和数据从控制器发送到 SignalR hub?
我使用 ASP.NET MVC。我想将数据从控制器发送到集线器以发送给客户端。我在控制器中编写了这段代码: 公共类 SampleController :控制器 { 私人只读 IHubCo...
所以,我的本地 docker 环境与 docker hub 桌面应用程序都能正常工作。但是当我尝试使用部署到heroku时 heroku 容器:push web -a 你的应用程序名称 它给出了一个错误说 不支持:
在 ec2 中安装节点,Amazon Linux2 错误 glibc >= 2.28
尝试在以下位置安装 npm 和 node: 猫 /etc/os-release 名称=“亚马逊Linux” 版本=“2” ID=“amzn” ID_LIKE="centos rhel fedora" 版本_ID=“2” 漂亮...
java.io.IOException:无法识别传输方案:[amqps]
我尝试使用 amqps 协议通过 JMeter 的 JMS Publisher Sampler 将消息发布到 Amazon MQ(ActiveMQ 引擎),但我收到一条响应消息: javax.jms.JMSException:无法创建
如何解决使用厨师客户端版本 14.6.47 未安装 7zip 的错误
我遇到以下错误 配方:7zip::default[0m amazon-ebs: * windows_zipfile[c:/dirname/] 操作解压缩 亚马逊-ebs:[0米 亚马逊-ebs:================================================ =======...
使用 PHP curl 批量调用 Amazon SP API
我正在尝试使用 PHP 和curl 来调用 getItemOffersBatch 的批处理过程来签名并进行调用——我可以毫无问题地单独调用 getItemOffers。我跑了一批2个...
我正在尝试使用 httr 包从 amazon sp api 检索数据。 到目前为止我所做的是: (0) 前提条件 库(httr) 库(httr2) 库(jsonlite) 库(润滑) (1)定义da...
我想在 AWS ALB 级别向请求添加自定义标头。我正在将一些 iRules 从 F5 迁移到 ALB,并且有很多用 F5 编写的自定义 iRules 来添加自定义标头...
我正在将文件上传到 Amazon s3 存储桶,并有权访问 InputStream 和包含文件 MIME 类型但不包含原始文件名的字符串。由我来实际创建......
通过 IAM 身份验证将任何 SQL 客户端连接到 Amazon RDS for MySQL
我可以从 SQL 命令行工具使用 IAM 身份验证连接到 MySQL RDS 数据库。但同样我需要实现与 DBeaver 等 SQL 客户端或其他一些客户端的连接。我确实...
如何指定 AWS 访问密钥 ID 和秘密访问密钥作为 amazon s3n URL 的一部分
我将输入和输出文件夹作为参数传递给来自网页的mapreduce字数统计程序。 出现以下错误: HTTP Status 500 - 请求处理失败;嵌套异常是 java.l...
AWS Lambda 测试时出现关键错误。 API网关POST方法显示未找到消息
我正在尝试使用 AWS Lambda、AWS API Gateway、Amazon SNS 和 AWS Dynamodb 构建无服务器联系表单。我有一个网页,将姓名、电子邮件和电话号码作为表单输入。我是...
使用上传管理器时,golang AWS SDK 是否会自动计算和检查对象的校验和?
我很难从 AWS 文档中确定这个问题的明确答案。 我读过各种各样的东西。 我在此页面上看到:“Amazon S3 使用校验和值来验证完整性...
Amazon Lightsail Strapi MySQL 客户端不支持服务器请求的身份验证协议
我正在尝试让 Strapi v4 项目在 Lightsail 上运行。到目前为止,我已经成功安装了 Strapi,设置了 mysql 数据库并将本地数据库转储到服务器。当尝试启动 Strapi Howe 时...
嗨,我在 amazon Ec2 micro Linux 实例上配置 ftp,但我发现错误 权限被拒绝(公钥)。无法读取数据包:连接已被对等方重置 我已经在我的实例上安装了 vsftpd,配置...
在 C# 中将 Task<T> 转换为 Task<object>,无需 T
我有一个充满扩展方法的静态类,其中每个方法都是异步的并返回一些值 - 像这样: 公共静态类 MyContextExtensions{ 公共静态异步任务 我有一个充满扩展方法的静态类,其中每个方法都是异步的并返回一些值 - 像这样: public static class MyContextExtensions{ public static async Task<bool> SomeFunction(this DbContext myContext){ bool output = false; //...doing stuff with myContext return output; } public static async Task<List<string>> SomeOtherFunction(this DbContext myContext){ List<string> output = new List<string>(); //...doing stuff with myContext return output; } } 我的目标是能够从另一个类中的单个方法调用这些方法中的任何一个,并将其结果作为对象返回。它看起来像这样: public class MyHub: Hub{ public async Task<object> InvokeContextExtension(string methodName){ using(var context = new DbContext()){ //This fails because of invalid cast return await (Task<object>)typeof(MyContextExtensions).GetMethod(methodName).Invoke(null, context); } } } 问题是转换失败。我的困境是我无法将任何类型参数传递给“InvokeContextExtension”方法,因为它是 SignalR 中心的一部分并且由 javascript 调用。在某种程度上,我不关心扩展方法的返回类型,因为它只会序列化为 JSON 并发送回 javascript 客户端。但是,我确实必须将 Invoke 返回的值转换为任务才能使用等待运算符。我必须为该“任务”提供一个通用参数,否则它将把返回类型视为 void。因此,这一切都归结为如何成功地将具有通用参数 T 的任务转换为具有对象通用参数的任务,其中 T 表示扩展方法的输出。 您可以分两步完成 - await使用基类执行任务,然后使用反射或dynamic收获结果: using(var context = new DbContext()) { // Get the task Task task = (Task)typeof(MyContextExtensions).GetMethod(methodName).Invoke(null, context); // Make sure it runs to completion await task.ConfigureAwait(false); // Harvest the result return (object)((dynamic)task).Result; } 这是一个完整的运行示例,它将上述通过反射调用 Task 的技术置于上下文中: class MainClass { public static void Main(string[] args) { var t1 = Task.Run(async () => Console.WriteLine(await Bar("Foo1"))); var t2 = Task.Run(async () => Console.WriteLine(await Bar("Foo2"))); Task.WaitAll(t1, t2); } public static async Task<object> Bar(string name) { Task t = (Task)typeof(MainClass).GetMethod(name).Invoke(null, new object[] { "bar" }); await t.ConfigureAwait(false); return (object)((dynamic)t).Result; } public static Task<string> Foo1(string s) { return Task.FromResult("hello"); } public static Task<bool> Foo2(string s) { return Task.FromResult(true); } } 一般来说,要将 Task<T> 转换为 Task<object>,我会简单地采用简单的连续映射: Task<T> yourTaskT; // .... Task<object> yourTaskObject = yourTaskT.ContinueWith(t => (object) t.Result); (文档链接在这里) 但是,您实际的具体需求是 通过反射调用 Task 并获取其(未知类型)结果 。 为此,您可以参考完整的dasblinkenlight的答案,它应该适合您的具体问题。 我想提供一个实现,恕我直言,这是早期答案的最佳组合: 精确的参数处理 无动态调度 通用扩展方法 给你: /// <summary> /// Casts a <see cref="Task"/> to a <see cref="Task{TResult}"/>. /// This method will throw an <see cref="InvalidCastException"/> if the specified task /// returns a value which is not identity-convertible to <typeparamref name="T"/>. /// </summary> public static async Task<T> Cast<T>(this Task task) { if (task == null) throw new ArgumentNullException(nameof(task)); if (!task.GetType().IsGenericType || task.GetType().GetGenericTypeDefinition() != typeof(Task<>)) throw new ArgumentException("An argument of type 'System.Threading.Tasks.Task`1' was expected"); await task.ConfigureAwait(false); object result = task.GetType().GetProperty(nameof(Task<object>.Result)).GetValue(task); return (T)result; } 您不能将 Task<T> 转换为 Task<object>,因为 Task<T> 不是协变的(也不是逆变的)。最简单的解决方案是使用更多反射: var task = (Task) mi.Invoke (obj, null) ; var result = task.GetType ().GetProperty ("Result").GetValue (task) ; 这很慢且效率低下,但如果不经常执行此代码则可用。顺便说一句,如果您要阻塞等待其结果,那么异步 MakeMyClass1 方法有什么用呢? 另一种可能性是为此目的编写一个扩展方法: public static Task<object> Convert<T>(this Task<T> task) { TaskCompletionSource<object> res = new TaskCompletionSource<object>(); return task.ContinueWith(t => { if (t.IsCanceled) { res.TrySetCanceled(); } else if (t.IsFaulted) { res.TrySetException(t.Exception); } else { res.TrySetResult(t.Result); } return res.Task; } , TaskContinuationOptions.ExecuteSynchronously).Unwrap(); } 它是非阻塞解决方案,将保留任务的原始状态/异常。 最有效的方法是自定义等待者: struct TaskCast<TSource, TDestination> where TSource : TDestination { readonly Task<TSource> task; public TaskCast(Task<TSource> task) { this.task = task; } public Awaiter GetAwaiter() => new Awaiter(task); public struct Awaiter : System.Runtime.CompilerServices.INotifyCompletion { System.Runtime.CompilerServices.TaskAwaiter<TSource> awaiter; public Awaiter(Task<TSource> task) { awaiter = task.GetAwaiter(); } public bool IsCompleted => awaiter.IsCompleted; public TDestination GetResult() => awaiter.GetResult(); public void OnCompleted(Action continuation) => awaiter.OnCompleted(continuation); } } 具有以下用法: Task<...> someTask = ...; await TaskCast<..., object>(someTask); 这种方法的局限性在于结果不是 Task<object> 而是一个可等待的对象。 我根据dasblinkenlight的回答做了一个小小的扩展方法: public static class TaskExtension { public async static Task<T> Cast<T>(this Task task) { if (!task.GetType().IsGenericType) throw new InvalidOperationException(); await task.ConfigureAwait(false); // Harvest the result. Ugly but works return (T)((dynamic)task).Result; } } 用途: Task<Foo> task = ... Task<object> = task.Cast<object>(); 这样您就可以将 T 中的 Task<T> 更改为您想要的任何内容。 对于最佳方法,不使用反射和动态丑陋语法,也不传递泛型类型。我将使用两种扩展方法来实现这个目标。 public static async Task<object> CastToObject<T>([NotNull] this Task<T> task) { return await task.ConfigureAwait(false); } public static async Task<TResult> Cast<TResult>([NotNull] this Task<object> task) { return (TResult) await task.ConfigureAwait(false); } 用途: Task<T1> task ... Task<T2> task2 = task.CastToObject().Cast<T2>(); 这是我的第二种方法,但不推荐: public static async Task<TResult> Cast<TSource, TResult>([NotNull] this Task<TSource> task, TResult dummy = default) { return (TResult)(object) await task.ConfigureAwait(false); } 用途: Task<T1> task ... Task<T2> task2 = task.Cast((T2) default); // Or Task<T2> task2 = task.Cast<T1, T2>(); 这是我的第三种方法,但是不推荐:(类似于第二种) public static async Task<TResult> Cast<TSource, TResult>([NotNull] this Task<TSource> task, Type<TResult> type = null) { return (TResult)(object) await task.ConfigureAwait(false); } // Dummy type class public class Type<T> { } public static class TypeExtension { public static Type<T> ToGeneric<T>(this T source) { return new Type<T>(); } } 用途: Task<T1> task ... Task<T2> task2 = task.Cast(typeof(T2).ToGeneric()); // Or Task<T2> task2 = task.Cast<T1, T2>(); 将 await 与动态/反射调用混合使用并不是一个好主意,因为 await 是一条编译器指令,它会围绕调用的方法生成大量代码,并且使用更多反射来“模拟”编译器工作并没有真正的意义,延续、包装等 因为您需要的是在运行时管理代码,然后忘记在编译时工作的 asyc await 语法糖。重写 SomeFunction 和 SomeOtherFunction 而不使用它们,并在运行时创建的您自己的任务中开始操作。您将得到相同的行为,但代码非常清晰。