使用ngFor迭代角度为null的嵌套对象

时间:2020-05-21 20:08:27

标签: angular

我有ngFor迭代对象的数组,而对象又有对象。

import requests
import re
from bs4 import BeautifulSoup
from urllib.parse import unquote

data = {
    '__EVENTTARGET': "dnn$ctr410$MemberSearch$btnSearch",
    '__EVENTARGUMENT': '',
    '__VIEWSTATEENCRYPTED': '',
    'dnn$ctlHeader$dnnSearch$Search': 'SiteRadioButton',
    'dnn$ctlHeader$dnnSearch$txtSearch': '',
    'dnn$ctr410$MemberSearch$txtFirstName': '',
    'dnn$ctr410$MemberSearch$txtLastName': '',
    'dnn$ctr410$MemberSearch$ddlMemberType': 0,
    'dnn$ctr410$MemberSearch$txtMembershipNumber': '',
    'dnn$ctr410$MemberSearch$txtCpNumber': '',
    'dnn$ctr410$MemberSearch$txtCity': '',
    'dnn$ctr410$MemberSearch$txtOrganisation': '',
    'dnn$ctr410$MemberSearch$txtAddress2': '',
    'dnn$ctr410$MemberSearch$txtAddress3': '',
    'dnn$ctr410$MemberSearch$txtEmail': '',
    'dnn_ctr410_MemberSearch_grdMembers_ClientState': '',
    'ScrollTop': 432,
    '__dnnVariable': '{"__scdoff":"1","__dnn_pageload":"__dnn_setScrollTop();"}'
}


def main(url):
    with requests.Session() as req:
        r = req.get(url)
        soup = BeautifulSoup(r.content, 'html.parser')
        data['StylesheetManager_TSSM'] = re.search(
            r"hf.value \+= '(.*?)\'", r.text).group(1)
        data['ScriptManager_TSM'] = unquote(soup.findAll('script', src=True)
                                            [2]['src']).split("=", 3)[-1]
        data['__VIEWSTATE'] = soup.find("input", id="__VIEWSTATE").get("value")
        data['__VIEWSTATEGENERATOR'] = soup.find(
            "input", id="__VIEWSTATEGENERATOR").get("value")
        data['__EVENTVALIDATION'] = soup.find(
            "input", id="__EVENTVALIDATION").get("value")

        for _ in range(5400):
            r = req.post(url, data=data)
            soup = BeautifulSoup(r.content, 'html.parser')
            names = [name.text for name in soup.select("div.name_head")]
            spans = [name.text for name in soup.select("td.chart_detail")]
            page = soup.select_one(
                "a.rgCurrentPage").next_sibling['href'].split("'")[1]
            data['__EVENTTARGET'] = page
            data['__EVENTVALIDATION'] = soup.find(
                "input", id="__EVENTVALIDATION").get("value")
            data['__VIEWSTATE'] = soup.find(
                "input", id="__VIEWSTATE").get("value")
            print(names)
            print(spans)
            with open('icsi.txt', 'a') as f:
                f.write("#####\n")
                for item in names:
                    f.write("%s\n" % item)
                f.write("#####")
                for item in spans:
                    f.write("%s" % item)



main("https://www.icsi.in/student/Members/MemberSearch.aspx")

请不要阅读语法,它是在移动设备中键入的。问题是item2为null,并且错误地指出了item2是不确定的。我该怎么做,这只是一个临时代码段,我要显示很多列。是我解决这个问题的方法?

我签出并发现

<div *ngFor="item of items" > <div>{{item.item1}}</div> <input name="test" [(ngModel)]="{{item.item2.item2a}}" /> </div>

。但是我想在迭代后修改记录。请提出建议。

1 个答案:

答案 0 :(得分:0)

像Phix在评论中所述,您呢?在错误的地方。这应该是您的实际代码:

<input name="test" [(ngModel)]="item?.item2?.item2a" />

您可以修改数据并使用[value]="modifiedData"

进行显示