如何为 AMP 未初始化变量设置默认值?

How to set a default value for an AMP uninitialized variable?

<input type="checkbox" [required]="(currentState == null) ? (true) : (false)">

amp-bind:[required] 的默认值与第一个表达式结果不匹配(true)。这可能会在下一次状态更改后导致意外行为。

编辑:也许更多的上下文可以帮助

<amp-state id="privacySettings">
      <script type="application/json">{                                   
           "general": {
               "mp": "required",
               "p1": false,
               "p5": false
           },
           "specific": {
               "mp": false,
               "p1": "required",
               "p5": "required",
               "ck": false
           }
       }
   </script>
</amp-state>
<div class="privacy">
    <div id="pmaindiv">
        <input on="tap:err_mess.hide" role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1"  [required]=privacySettings[currentState].mp  [checked]=privacySettings[currentState].ck >

每次尝试分配给 [require](但它也代表 [checked],我猜,对于其他属性)一个值(静态或通过 var)都会得到绑定放大器错误。

<amp-state id="temp">
     <script type="application/json">
          {
           "var": "general"
            }
     </script>
</amp-state>

(...)  [required]="(currentState==null) ? privacySettings[temp.var].mp : privacySettings[currentState].mp" (...)

如果通过 'on' 属性设置 currentState,它会通过验证并正常工作。

您是否正在设置 required 属性以及 [required] 绑定?

试试这个:

<input type="checkbox" 
       [required]="(currentState == null ? 'true' : 'false')" 
       required="true">

另外,如果未定义变量,您可以使用它,

(myVar || 'defaultVal')

如果未定义 myVar,则将使用值 defaultVal

但是设置默认值最正确的方法是像这样使用 <amp-state>:

  <amp-state id="props">
    <script type="application/json">
      {
        "myVar": "blah"
      }
    </script>
  </amp-state>

然后你可以通过给 amp-state 元素加上前缀 id 来使用这个变量,像这样:

props.myVar


编辑:以下对我有用

注:
1.在初始amp-state元素中设置currentState
2.基本required属性的默认值

<amp-state id="privacySettings">
    <script type="application/json">
    {   
      "currentState":"general",                              
      "general": {
        "mp": "required",
        "p1": false,
        "p5": false
      },
      "specific": {
        "mp": false,
        "p1": "required",
        "p5": "required",
        "ck": false
      }
     }
 </script>
</amp-state>
<div class="privacy">
    <div id="pmaindiv">
        <input role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1"  
        required="required"
        [required]=privacySettings[privacySettings.currentState].mp
        >

  </div>
</div>

编辑 2:当 currentState 尚未初始化时,以下内容也应该有效:

<amp-state id="privacySettings">
    <script type="application/json">
    {                              
      "general": {
        "mp": "required",
        "p1": false,
        "p5": false
      },
      "specific": {
        "mp": false,
        "p1": "required",
        "p5": "required",
        "ck": false
      }
     }
 </script>
</amp-state>


<amp-state id="temp">
     <script type="application/json">
          {
           "var": "general"
            }
     </script>
</amp-state>

<div class="privacy">
    <div id="pmaindiv">
        <input role="mainmandatoryprivacy" tabindex="1" type="checkbox" name="main-privacy" id="pmain" class="pmain" value="1"  
        required="required"
        [required]=(currentState==null?privacySettings[temp.var].mp:currentState) 
        >

  </div>
</div>