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. JavaScript 的语句性能问题 - 2

    你们能帮我确定每一个的性能差异吗声明?你会使用哪一个?创建一个新数组使用-varnew_list=newArray();//or-varnew_list=[];附加元素使用-push('a')-new_list[i];(ifiknowthelength)三元运算符或if(){}else(){}尝试制作更快的isodd函数(!(is_even))or(x%2!=0)forEach()或正常迭代还有一个a=b=3;或b=3;a=b;[编辑:我正在制作一个数学库。因此,也欢迎任何性能黑客讨论:)]感谢您的帮助。 最佳答案

  2. Javascript 不兼容/不一致 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我希望在几周内做一次演示,并且想知道:您在开发时要注意的十大Javascript不兼容性是什么?是什么让你绊倒了?我可以从一个开始:varsomevar={'internet':'explorer','hates':'trailing','commas':'in

  3. javascript - mozilla firefox 中没有为 javascript 函数定义事件? - 2

    functiononlyNumeric(){if(event.keyCode<48||event.keyCode>57){event.returnValue=false;}}onkeypress=onlyNumneric();在IE中,这段代码运行良好。但是,在MozillaFirefox中,该事件是一个未定义的错误。 最佳答案 在FF/Mozilla中,事件作为参数传递给您的事件处理程序。使用类似下面的内容来绕过IE中缺少的事件参数。functiononlyNumeric(e){if(!e){e=window.even

  4. javascript - 用于 IE 的 styleWithCSS - 2

    我正在构建一个自定义RTE,将用户输入转换为自制标记,现在我是个白痴,我使用带有designMode="On"的iframe完成了此操作,并使用styleWithCSS=false让它在firefox中工作,这样我可以轻松转换<b>(是的...b:()到我的标记中,然后输出正确的代码而不是我必须从<spanstyle="...读取现在我的问题是,我似乎无法找到看起来或像styleWithCSS=falseforIE的东西、Chrome或Opera,欢迎提出任何建议。 最佳答案 使用这个:try{Editor

  5. javascript - 引用 javascript 对象文字数组 - 2

    您将如何引用此结构中的模型(Accord、CRV、Prius等)?这是一个糟糕的结构,能够提取品牌...然后使用品牌获取模型...然后使用模型获取选项?varcars=[{"makes":"Honda","models":[{'Accord':["2dr","4dr"]},{'CRV':["2dr","Hatchback"]},{'Pilot':["base","superDuper"]}]},{

  6. javascript - 为什么 IE 在设置 innerHTML 时会出现意外错误 - 2

    我尝试在firefox中的一个元素上设置innerHTML,它工作正常,在IE中尝试它并出现意外错误,没有明显的原因。例如,如果您尝试将表格的innerHTML设置为“hifromstu”,它将失败,因为表格后面必须跟一个序列。 最佳答案 您看到该行为是因为innerHTML对于IE中的表元素是只读的。来自MSDN的innerHTMLProperty文档:Thepropertyisread/writeforallobjectsexceptthefollowing,forwhichitisread-only:COL,COLGROUP,

  7. javascript - 如何减小 Angular 2、4、6、7、8、9、10 中 vendor.js 的大小? - 2

    AngularCLI创建vendor.js我不知道为什么以及它有什么用??对于新应用,此文件的大小约为3.2MB!!此文件是否包含Angular6Javascript源?您不认为这是在低速连接上加载到Internet上的大文件吗? 最佳答案 此文件包含您添加到项目中的所有库。如果您在生产模式下构建应用,文件大小会更小。ngbuild--prod 关于javascript-如何减小Angular2、4、6、7、8、9、10中vendor.js的大小?,我们在StackOverflow上找到

  8. javascript - NestJS 在生产中启用 cors - 2

    我在theofficialtutorial之后在我的NestJS应用中启用了CORS,所以我的main.ts看起来像下面这样:import{FastifyAdapter,NestFactory}from'@nestjs/core';import{AppModule}from'./app.module';asyncfunctionbootstrap(){constapp=awaitNestFactory.create(AppModule,newFastifyAdapter(),{cors:true});awaitapp.listen(3000);}boot

  9. javascript - js中的 session 存储 - 2

    您好,我是JavaScript的初学者,我想问一下是否可以session我从服务器获取的数据。我想要session的数据是我在网上搜索到的“data.xhr.response”,大多数人都使用SessionStorage函数,但我不确定如何处理它,我们将不胜感激。$(function(){Dropzone.autoDiscover=false;$('#file-upload').dropzone({maxFiles:1,acceptedFiles:".pdf,.doc,.docx,.html",dataType:"json",succes

  10. javascript - Chrome : Simulate keypress events on input text field using javascript - 2

    stackoverflow中有很多关于此的内容,但似乎没有一个适合我的情况。我有一个输入文本字段,我想模拟按键事件来填充文本字段。原因:我在不提供API的网络界面上自动执行大量数据输入任务。使用.value更改输入字段不会触发界面的JS端(Angular)。这就是为什么我要模拟按键事件。首先我尝试了这个:varinp=document.getElementById('rule-type');inp.dispatchEvent(newKeyboardEvent('keypress',{'key':'a'}));然后我了解到在

随机推荐

  1. JavaScript 的语句性能问题 - 2

    你们能帮我确定每一个的性能差异吗声明?你会使用哪一个?创建一个新数组使用-varnew_list=newArray();//or-varnew_list=[];附加元素使用-push('a')-new_list[i];(ifiknowthelength)三元运算符或if(){}else(){}尝试制作更快的isodd函数(!(is_even))or(x%2!=0)forEach()或正常迭代还有一个a=b=3;或b=3;a=b;[编辑:我正在制作一个数学库。因此,也欢迎任何性能黑客讨论:)]感谢您的帮助。 最佳答案

  2. Javascript 不兼容/不一致 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我希望在几周内做一次演示,并且想知道:您在开发时要注意的十大Javascript不兼容性是什么?是什么让你绊倒了?我可以从一个开始:varsomevar={'internet':'explorer','hates':'trailing','commas':'in

  3. javascript - mozilla firefox 中没有为 javascript 函数定义事件? - 2

    functiononlyNumeric(){if(event.keyCode<48||event.keyCode>57){event.returnValue=false;}}onkeypress=onlyNumneric();在IE中,这段代码运行良好。但是,在MozillaFirefox中,该事件是一个未定义的错误。 最佳答案 在FF/Mozilla中,事件作为参数传递给您的事件处理程序。使用类似下面的内容来绕过IE中缺少的事件参数。functiononlyNumeric(e){if(!e){e=window.even

  4. javascript - 用于 IE 的 styleWithCSS - 2

    我正在构建一个自定义RTE,将用户输入转换为自制标记,现在我是个白痴,我使用带有designMode="On"的iframe完成了此操作,并使用styleWithCSS=false让它在firefox中工作,这样我可以轻松转换<b>(是的...b:()到我的标记中,然后输出正确的代码而不是我必须从<spanstyle="...读取现在我的问题是,我似乎无法找到看起来或像styleWithCSS=falseforIE的东西、Chrome或Opera,欢迎提出任何建议。 最佳答案 使用这个:try{Editor

  5. javascript - 引用 javascript 对象文字数组 - 2

    您将如何引用此结构中的模型(Accord、CRV、Prius等)?这是一个糟糕的结构,能够提取品牌...然后使用品牌获取模型...然后使用模型获取选项?varcars=[{"makes":"Honda","models":[{'Accord':["2dr","4dr"]},{'CRV':["2dr","Hatchback"]},{'Pilot':["base","superDuper"]}]},{

  6. javascript - 为什么 IE 在设置 innerHTML 时会出现意外错误 - 2

    我尝试在firefox中的一个元素上设置innerHTML,它工作正常,在IE中尝试它并出现意外错误,没有明显的原因。例如,如果您尝试将表格的innerHTML设置为“hifromstu”,它将失败,因为表格后面必须跟一个序列。 最佳答案 您看到该行为是因为innerHTML对于IE中的表元素是只读的。来自MSDN的innerHTMLProperty文档:Thepropertyisread/writeforallobjectsexceptthefollowing,forwhichitisread-only:COL,COLGROUP,

  7. javascript - 如何减小 Angular 2、4、6、7、8、9、10 中 vendor.js 的大小? - 2

    AngularCLI创建vendor.js我不知道为什么以及它有什么用??对于新应用,此文件的大小约为3.2MB!!此文件是否包含Angular6Javascript源?您不认为这是在低速连接上加载到Internet上的大文件吗? 最佳答案 此文件包含您添加到项目中的所有库。如果您在生产模式下构建应用,文件大小会更小。ngbuild--prod 关于javascript-如何减小Angular2、4、6、7、8、9、10中vendor.js的大小?,我们在StackOverflow上找到

  8. javascript - NestJS 在生产中启用 cors - 2

    我在theofficialtutorial之后在我的NestJS应用中启用了CORS,所以我的main.ts看起来像下面这样:import{FastifyAdapter,NestFactory}from'@nestjs/core';import{AppModule}from'./app.module';asyncfunctionbootstrap(){constapp=awaitNestFactory.create(AppModule,newFastifyAdapter(),{cors:true});awaitapp.listen(3000);}boot

  9. javascript - js中的 session 存储 - 2

    您好,我是JavaScript的初学者,我想问一下是否可以session我从服务器获取的数据。我想要session的数据是我在网上搜索到的“data.xhr.response”,大多数人都使用SessionStorage函数,但我不确定如何处理它,我们将不胜感激。$(function(){Dropzone.autoDiscover=false;$('#file-upload').dropzone({maxFiles:1,acceptedFiles:".pdf,.doc,.docx,.html",dataType:"json",succes

  10. javascript - Chrome : Simulate keypress events on input text field using javascript - 2

    stackoverflow中有很多关于此的内容,但似乎没有一个适合我的情况。我有一个输入文本字段,我想模拟按键事件来填充文本字段。原因:我在不提供API的网络界面上自动执行大量数据输入任务。使用.value更改输入字段不会触发界面的JS端(Angular)。这就是为什么我要模拟按键事件。首先我尝试了这个:varinp=document.getElementById('rule-type');inp.dispatchEvent(newKeyboardEvent('keypress',{'key':'a'}));然后我了解到在