简体   繁体   English

angular 中变量 output 的动态字符串插值

[英]Dynamic String Interpolation for variable output in angular

I need to mix the answers of Quiz-Questions in random order.我需要以随机顺序混合测验问题的答案。

I have Question objects like: Question = { question: 'what is the capital of Germany?', answer1: 'Berlin', answer2: 'London', answer3: 'Paris', answer4: 'Rome' }我有像这样的问题对象:问题= {问题:'德国的首都是什么?',答案1:'柏林',答案2:'伦敦',答案3:'巴黎',答案4:'罗马'}

Every time I display the Question in the template I generate a random array eg randomOrder = [3,2,0,1]每次我在模板中显示问题时,我都会生成一个随机数组,例如 randomOrder = [3,2,0,1]

I want to use string interpolation in the template to show the question with random Order of the answers:我想在模板中使用字符串插值来显示具有随机答案顺序的问题:

Question: {{Question.question}}问题:{{Question.question}}
Answer1: {{Question.answer'answerOrder[0]'}}答案 1:{{Question.answer'answerOrder[0]'}}
Answer2: {{Question.answer'answerOrder[1]'}}答案 2:{{Question.answer'answerOrder[1]'}}
Answer3: {{Question.answer'answerOrder[2]'}}答案 3:{{Question.answer'answerOrder[2]'}}
Answer4: {{Question.answer'answerOrder[3]'}}答案 4:{{Question.answer'answerOrder[3]'}}

Can someone help me with the correct syntax for angular?有人可以帮助我了解 angular 的正确语法吗? Thanks谢谢

just refer to object by a dynamic key只需通过动态键引用 object

Question: {{Question.question}}
Answer1: {{Question['answer'+answerOrder[0]]}}
Answer2: {{Question['answer'+answerOrder[1]]}}

or you could store answers as array like this: {question: '...', answers: [a,b,c,d]}或者您可以将答案存储为这样的数组: {question: '...', answers: [a,b,c,d]}

A better aproach is to get a method to return the composed string, using string interpolation, like for example:更好的方法是使用字符串插值获取返回组合字符串的方法,例如:

questionString(n: number): string {
   return `Answer${n+1}: ${questions['answer'+n]}`;
}

And use, for example:并使用,例如:

{{question(1)}}
{{question(2)}}
...

Or better than, inside a for loop.或者比在 for 循环中更好。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM