我在为Angular组件提供属性之后。通过属性我的意思是你在HTML中放置的切换式布尔属性,而没有指定属性的值:
而不是输入(这不是我想要的):
如果存在<my-component compact="compact">
,则组件应将其值强制为布尔值:
<my-component compact="true>
//&lt; = true <my-component compact="false">
//&lt; = true compact
//&lt; = true?如果<my-component compact>
没有值,则映射为true:
compact
//&lt; = true 如果遗漏了<my-component>
:
constructor(
@Attribute('compact') public compact,
) {
console.log(this.compact) // `null` for <my-component compact>
}
//&lt; = false 但是当我没有属性值时,组件看到null,所以我无法区分大小写#4和#5,即使我在构造函数中提供了默认值。
def BudgetView(request):
import pdb
pdb.set_trace()
if request.user.is_authenticated:
U=request.user
#initalize formset factories
ItemFormSet = modelformset_factory(Item, fields=(blabla), extra=0)
CatFormset=modelformset_factory(BudgetCatagory, fields=(blabla), extra=0)
#initalize Constants
InitiateConstants(CatagoryItemsList)
if request.method=='POST':
FormsetItem=ItemFormSet(request.POST,initial=Item.objects.filter(budgetcatagory__user_id=U.id).values())
FormsetCat=CatFormset(request.POST)
if FormsetItem.is_valid():
-bla
-bla
-bla
return redirect('/HighLevelInput')
else:
#populate
I=Item.objects.filter(budgetcatagory__user_id=U.id)
C=BudgetCatagory.objects.filter(user_id=U.id)
#initiate initial catagories and items for new user
if (not I.exists()) or (not C.exists()):
Item.objects.filter(budgetcatagory__user_id=U.id).delete()
BudgetCatagory.objects.filter(user_id=U.id).delete()
InitiateNewUser(U)
I=Item.objects.filter(budgetcatagory__user_id=U.id)
C=BudgetCatagory.objects.filter(user_id=U.id)
FormsetItem=ItemFormSet(queryset=I)
FormsetCat=CatFormset(queryset=C)
return render(request,'getdata/budgetmachine.html', {'FormsetItem':FormsetItem, 'FormsetCat':FormsetCat })
else:
return redirect('/login')
我应该怎么做?是否具有属性装饰器
答案 0 :(得分:1)
在#1~4的情况下,compact
的值的类型将始终为字符串。
如果是#4,则compact
的值为空字符串(类型为string
),而情况#5将为 null (类型为object
),因此您可以通过typeof(compact)
区分情况#4和#5。