TOGOUTECH

javascript - 我如何像 React 一样在 Angular 2+ 中传递 Prop ?

coder 2024-05-16 原文

在 React 中,我可以像这样任意传递 props:

function SomeComponent(props) {
  const {takeOutProp, ...restOfProps} = props;
  return <div {...restOfProps}/>;
}

如何在 Angular 中做同样的事情?

--

更具体地说,我想编写一个自定义下拉组件并将 Prop 向下传递到一个选择框。

最佳答案

与 React 组件相反,Angular 组件不会在输入更改时重新编译,而是使用 @Input 属性装饰器来启用更改检测。所有预期传递的属性都应明确定义为组件输入。

对于自定义选择组件,没有比这更好的选择了。可以从当前组件元素读取静态属性并将它们设置在嵌套组件元素上,但这不会设置绑定(bind)。

关于包装组件中深层 props 的 React 配方:

const Baz = props => <p>{props.baz}</p>;
const Bar = props => <Baz {...props} />;
const Foo = props => <Bar {...props} />;

这通常由 Angular DI 和注入(inject)器层次结构处理。可以在相应的注入(inject)器上定义提供者,以便使数据和行为可用于嵌套组件。

关于javascript - 我如何像 React 一样在 Angular 2+ 中传递 Prop ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297089/

有关javascript - 我如何像 React 一样在 Angular 2+ 中传递 Prop ?的更多相关文章

  1. c# - 如何在 itextsharp pdf 创建中设置单元格宽度 - 2

    如何使用C#在itextsharppdf单元格中设置单元格宽度和高度。我只是用cell.width=200f;但它应该显示错误信息。widthcannotbeset.我该怎么办?.. 最佳答案 您没有设置单元格的宽度。您应该设置列的宽度。您可以通过将它们应用于表格对象来做到这一点:float[]widths=newfloat[]{1f,2f};table.SetWidths(widths);Neha的回答是设置表格对象的宽度更多引用资料在这里:http://www.mikesdotnetting.com/Article/86/iTe

  2. c# - 如何将焦点设置到 WPF 工具包数据网格的特定单元格 - 2

    我正在使用WPF工具包提供的DataGrid控件来显示产品列表及其OpenStock、描述等。在此DataGrid中,我已将OpenStock列设置为可编辑,其余列不可编辑。当我的这个窗口加载时,我现在想要的是,我想将键盘焦点设置到OpenStock列的第一个单元格,如果可能的话,在编辑模式下。我搜索了2天,最后在这里发布。任何帮助或代码示例都会有所帮助。<my:DataGridAutoGenerateColumns="False"ItemsSource="{Binding}"Margin="2,2,2,55"x:Name="

  3. c# - 如何在 Sharepoint 中查找登录用户? - 2

    我开发了一个必须部署在Sharepoint服务器上的“Web部件”。我需要用户的用户名,该用户已登录Web部件中的共享点服务器。我如何获得该用户名? 最佳答案 以下对我有用:SPWebtheSite=SPControl.GetContextWeb(Context);SPUsertheUser=theSite.CurrentUser;stringstrUserName=theUser.LoginName;并检查this出。 关于c#-如何在Sharepoint中查找登录用户?,我们在Sta

  4. c# - 在 MVC 上执行编辑时如何保留某些字段的原始值? - 2

    如您所知,当我们要修改数据时,我们将进入编辑页面:publicActionResultEditAdmin(intUserId){Useruser=persons.Users.Find(id);returnView(user);}然后我们在编辑页面提交,它会修改:publicActionResultEditAdmin(Useruser){persons.Entry(user).State=EntityState.Modified;persons.SaveChanges();}但问题是,我有很多字段不需要修改:publicclassUser{publicintUserId{get;set;

  5. c# - 如何将图像流嵌入到 MailMessage - 2

    我在将Properties.Resources中的图像嵌入到MailMessage时遇到了一些困难,目前该图像未显示在我收到的电子邮件中。我已经成功地从目录位置嵌入了图像,但如果图像来自内存/应用程序,我会更喜欢。这是我正在做的事情的简化版本。Bitmapb=newBitmap(Properties.Resources.companyLogo);MemoryStreamlogo=newMemoryStream();b.Save(logo,ImageFormat.Jpeg);MailMessagenewEmail=newMailMessage(from,to);newEmail.Subj

  6. c# - 如何在不知道封闭泛型类型的情况下访问泛型属性 - 2

    我有一个通用类型如下publicclassTestGeneric<T>{publicTData{get;set;}publicTestGeneric(Tdata){this.Data=data;}}如果我现在有一个对象(来自某个外部源),我知道它的类型是某个封闭的TestGeneric,但我不知道TypeParameterT。现在我需要访问数据我的对象。问题是我无法转换对象,因为我不确切知道哪个关闭的TestGeneric。我用//thxtohttp://stackoverflow.com/questions/457676/c-reflection-check-if-a-c

  7. c# - 如何证明 Dictionary 的 TryGetValue 的双重检查锁定模式不是线程安全的 - 2

    最近我看到一些C#项目在Dictionary上使用双重检查锁定模式。像这样:privatestaticreadonlyobject_lock=newobject();privatestaticvolatileIDictionary<string,object>_cache=newDictionary<string,object>();publicstaticobjectCreate(stringkey){objectval;if(!_cache.TryGetValue(key,outval)){lock(_lock){if(!_cache.TryGetValue

  8. c# - 如何动态隐藏jqgrid列 - 2

    我正在我的asp.netMVCweb应用程序中实现jqgrid。在我的网格中,我有两列编辑和删除。只有当用户以admin身份登录时,删除才应该可见。我们如何在jqgrid中动态地hide.show列。我有一个session变量来检查登录用户是否是管理员。我在javascript中访问该变量。但是,不确定如何在jqgrid中隐藏/显示列请帮忙.. 最佳答案 使用此代码,jQuery("#list").jqGrid('hideCol',["colModel1_name","colM

  9. c# - 当 AutoGenerateColumns = True 时如何重命名 DataGrid 列? - 2

    我有一个简单的数据结构类:publicclassClient{publicStringname{set;get;}publicStringclaim_number{set;get;}}我将其输入DataGrid:this.data_grid_clients.ItemSource=this.clients;我想更改列标题。即:claim_number到“claim编号”。我知道这可以在您通过执行以下操作手动创建列时完成:this.data_grid_clients.Columns[0].Header="ClaimNumber"但是,Columns属性在自动生成列时为空。有

  10. c# - 如何使用正则表达式删除括号中的文本 - 2

    我正在寻找一个将执行以下操作的正则表达式:INPUT:UserName([email protected])OUTPUT:UserName实现此目标的最佳方法是什么?使用正则表达式提取括号内的文本并替换它和任何)(字符? 最佳答案 这应该可以完成工作:varinput="UserName([email protected])";varoutput=Regex.Replace(input,@"?\(.*?\)",string.Empty);注意(和)字符的转义,这样它们就不会被识别为组标记。

随机推荐

  1. c# - 内存映射文件 .NET - 2

    我有一个项目,它需要访问ASP.NET中的大量专有数据。这是通过在共享内存中加载数据在Linux/PHP上完成的。我想知道尝试使用内存映射文件是否可行,或者是否有更好的方法支持更好的.NET。我正在考虑使用数据缓存,但不确定缓存中保存的数据大小的所有缺陷。 最佳答案 我知道这有点晚了,但是.NET4.0框架现在支持开箱即用的内存映射文件:http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx

  2. c# - 当我们使用时线程被中止 - 2

    我收到以下异常:System.Threading.ThreadAbortException:Threadwasbeingaborted.atSystem.Threading.Thread.AbortInternal()atSystem.Threading.Thread.Abort(ObjectstateInfo)atSystem.Web.HttpResponse.End()atSystem.Web.HttpResponse.Redirect(Stringurl,BooleanendResponse)atSystem.Web.HttpResponse.Redirect(Stringurl

  3. c# - 什么是 protected 虚拟新 - 2

    我正在阅读有关制作自定义主体的教程,我遇到了代码:publicclassBaseController:Controller{protectedvirtualnewUserPrincipalUser{get{returnHttpContext.UserasUserPrincipal;}}}“protected虚拟新”究竟是如何工作的?关键字“new”是最让我困惑的。 最佳答案 protected意味着它只在这个类和从它派生的类中可见。virtual意味着它可以在派生类中被覆盖。new意味着您在这里创建新的重写层次结构,即您停止重写基类

  4. C# 从文本框中获取字符串 - 2

    我只是一个C#菜鸟,我有这个问题想问你。我这里有一个表单,要求提供登录详细信息。它有两个文本字段:用户名密码我想要的是获取在该文本字段中输入的字符串。我还不熟悉C#中的方法..(在java中,使用getString方法)。C#中的“等效”方法可能是什么? 最佳答案 在C#中,与java不同,我们不必使用任何方法。TextBox属性Text用于获取或设置其文本。获取stringusername=txtusername.Text;stringpassword=txtpassword.Text;设置txtusername.Text=

  5. c# - String.Join 对象列表 - 2

    在C#中,如果我有一个List<MyObj>其中MyObj是一个重写了ToString()的自定义类方法使得每个MyObjList中的对象可以很容易地转换为字符串。我如何加入这个List<MyObj>带有分隔符,例如管道(|)到单个字符串。所以,如果我有3个MyObj对象,它们的ToString方法将分别生成AAA、BBB、CCC。我会创建一个字符串:AAA|BBB|CCC。对于更简单类型的列表,例如List<string>,我将其简单地执行为:String.Join("|",myList.ToArray());.有什么办法可以做类似

  6. c# - Asp.net session 变量 - 2

    我有一个带有c#代码的asp.net项目。我有一个名为GlobalVariable的静态类,我在其中存储了一些信息,例如当前选择的产品。但是,我看到当有两个用户使用该网站时,如果一个更改所选产品,则为每个人更改。静态变量似乎对每个人都是公共(public)的。我想创建(从C#代码)某种仅从C#代码使用的session变量,但不仅从页面,而且从任何类。 最佳答案 是的,静态变量由整个应用程序共享,它们绝不是用户/session私有(private)的。要从非页面类访问Session对象,您应该使用HttpContext.Current

  7. c# - 字符串比较 == 是否仅因为字符串不可变才起作用? - 2

    我之前在比较两个字符串和它们的变量时有一个想法:stringstr1="foofoo";stringstrFoo="foo";stringstr2=strFoo+strFoo;//Eventhoughtstr1andstr2reference2different//objectsthefollowingassertionistrue.Debug.Assert(str1==str2);这是否纯粹是因为.NET运行时识别字符串的值是相同的并且因为字符串是不可变的使得str2的引用等于str1的引用?所以当我们执行str1==str2时,我们实际上比较引用而不

  8. c# - 对列表进行排序,使特定值排在最前面 - 2

    我有一个Offer类,其中包含一个已归档的类别。我希望特定类别的所有报价显示在顶部,然后是其他所有报价。我试过了,但没有用,你有什么推荐的?Offers=Offers.OrderBy(x=>x.Category=="Corporate").ToList(); 最佳答案 当您按bool值排序时,false(0)出现在true(1)之前。要首先获取与谓词匹配的元素,您应该使用OrderByDescending反转排序顺序:Offers=Offers.OrderByDescending(x=>x.Categor

  9. c# - 代码隐藏中的动态上下文菜单 - 2

    我只想为我动态创建的几个对象添加ContextMenu,但是我发现的唯一方法是像这样在运行时创建ContextMenu:ContextMenupMenu=newContextMenu();MenuItemitem1=newMenuItem();MenuItemitem2=newMenuItem();//Ihaveabout10items//...item1.Header="item1";item1.Click+=newRoutedEventHandler(item1_Click);pMenu.Items.Add(item1);item2.Header="item

  10. c# - 以管理员身份运行 : requireAdministrator & ClickOnce + emulating system time - 2

    我的应用程序使用ClickOnce技术。今天我需要以管理员身份运行它。我修改了来自的list文件<requestedExecutionLevellevel="asInvoker"uiAccess="false"/>到<requestedExecutionLevellevel="requireAdministrator"uiAccess="false"/>但是VS无法编译项目:Error35ClickOncedoesnotsupporttherequestexecutionlevel'requ